C# 仅在一侧具有导航属性的一对多关系?
我在两个表之间有非常好的一对多关系:C# 仅在一侧具有导航属性的一对多关系?,c#,entity-framework,.net-core,entity-framework-core,ef-fluent-api,C#,Entity Framework,.net Core,Entity Framework Core,Ef Fluent Api,我在两个表之间有非常好的一对多关系: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; } pu
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();
我有两个具体的问题:
播放器
中删除播放
集合
绝对可能。编写实体配置,如下所示:
modelBuilder.Entity<Play>()
.HasOne<Player>(p => p.Player)
.WithMany() // <-- Here it is
.HasForeignKey(p => p.PlayerId)
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
modelBuilder.Entity()
.HasOne(p=>p.Player)
.WithMany()//p.PlayerId)
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
在不依赖EF核心约定的情况下(例如,“Id”是主键等)是否可以执行此操作。。。?(这意味着,所有内容都是明确的,无论是在fluent API中还是作为注释)
不!没有fluentapi是不可能的
是否可以省略侧面的导航属性?例如,从播放器
中删除播放
集合
绝对可能。编写实体配置,如下所示:
modelBuilder.Entity<Play>()
.HasOne<Player>(p => p.Player)
.WithMany() // <-- Here it is
.HasForeignKey(p => p.PlayerId)
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
modelBuilder.Entity()
.HasOne(p=>p.Player)
.WithMany()//p.PlayerId)
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
在不依赖EF核心约定的情况下(例如,“Id”是主键等)是否可以执行此操作。。。?(这意味着,所有内容都是明确的,无论是在fluent API中还是作为注释)
不!如果没有Fluent API,这是不可能的。我知道EF Core有一些约定,因此您不必用Fluent API编写任何代码。类似于属性
Id
EFCore将创建PK,不带注释或FluentAPI。我不想得到这样的答案:“你不必这么做,因为EFCore会自动使用它的约定来解释它”@TanvirArjel,但看起来你的答案就是我想要的答案。ThanksI知道EF Core有一些约定,所以您不必在fluent API中编写任何代码。类似于属性Id
EFCore将创建PK,不带注释或FluentAPI。我不想得到这样的答案:“你不必这么做,因为EFCore会自动使用它的约定来解释它”@TanvirArjel,但看起来你的答案就是我想要的答案。谢谢