我在两个表之间具有非常好的一对多关系:Play
和Player
:
public class Player
{
public int PlayerId { get; set; }
public string Name { get; set; }
public ICollection<Play> Plays { get; set; }
}
public class Play
{
public int PlayId { get; set; }
public int PlayerId { get; set; }
public Player Player { get; set; }
}
modelBuilder.Entity<Play>()
.HasOne<Player>(p => p.Player)
.WithMany(p => p.Plays)
.OnDelete(DeleteBehavior.Cascade)
.HasForeignKey(p => p.PlayerId)
.IsRequired();
是否可以省略侧面的导航属性?例如,从Plays
中删除Player
集合?
public class Player
{
public int PlayerId { get; set; }
public string Name { get; set; }
}
我将有两个具体问题:
是否可以省略侧面的导航属性?例如,从
Plays
中删除Player
集合?
绝对有可能。编写您的实体配置,如下所示:
modelBuilder.Entity<Play>()
.HasOne<Player>(p => p.Player)
.WithMany() // <-- Here it is
.HasForeignKey(p => p.PlayerId)
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
是否可以在不依赖EF Core约定的情况下进行操作-例如“ Id”是主键,等等? (意味着,将所有内容明确化,以流利的API或注释形式)
不!没有Fluent API。