Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 使用IsRequired()在EF Core中配置1:n关系_Entity Framework_Entity Framework Core - Fatal编程技术网

Entity framework 使用IsRequired()在EF Core中配置1:n关系

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()调用感到困惑,因为我在页面实体中没有/需要外键 是否需要.

在EF Core中,许多API都已更改,因此我不知道如何正确配置关系

假设一本
有许多
页面
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);