Entity framework 使用IsRequired()在EF Core中配置1:n关系
在EF Core中,许多API都已更改,因此我不知道如何正确配置关系 假设一本Entity framework 使用IsRequired()在EF Core中配置1:n关系,entity-framework,entity-framework-core,Entity Framework,Entity Framework Core,在EF Core中,许多API都已更改,因此我不知道如何正确配置关系 假设一本书有许多页面s,一本页面必须是一本书的一部分(它不能单独存在) builder.Entity() .HasMany(e=>e.Pages) .WithOne(e=>e.Book) //.IsRequired()//这是必需的吗? .OnDelete(DeleteBehavior.Cascade); 我已经看过了,但是我仍然对我的案例的.IsRequired()调用感到困惑,因为我在页面实体中没有/需要外键 是否需要.
书
有许多页面
s,一本页面
必须是一本书
的一部分(它不能单独存在)
builder.Entity()
.HasMany(e=>e.Pages)
.WithOne(e=>e.Book)
//.IsRequired()//这是必需的吗?
.OnDelete(DeleteBehavior.Cascade);
我已经看过了,但是我仍然对我的案例的.IsRequired()
调用感到困惑,因为我在页面
实体中没有/需要外键
是否需要.IsRequired()
必需?
我假设:
- 它指的是关系的“子项”/“从属项”端,即
页面
- 如果包含,则
Book:Pages=1:0..n
- 如果没有,则
Book:Pages=0..1:0..n
页面
类中未包含外键属性,EF将创建一个可为空的影子外键属性,其级联操作为无操作。如果要将生成的BookId
列配置为非空,则必须使用Required
方法覆盖该值,并且还需要指定级联操作,正如您所做的那样,以确保在删除书籍时删除依赖项
所以你的问题的答案是肯定的,这在你的场景中是必需的
builder.Entity<Book>()
.HasMany(e => e.Pages)
.WithOne(e => e.Book)
//.IsRequired() // is this, erm, required?
.OnDelete(DeleteBehavior.Cascade);