.net core EFCore OnDelete级联多对一

.net core EFCore OnDelete级联多对一,.net-core,entity-framework-core,.net Core,Entity Framework Core,我有一个数据模型,大致如下: public class Entity1 { public Guid Id { get; set; } } public class Entity2 { public Guid Id { get; set; } public Entity1 RelatedEntity { get; set; } } 在我的例子中,每个Entity1可能有许多entity2,但据我所知,在我的数据模式中,让Entity1跟踪所有使用它的entity2是没

我有一个数据模型,大致如下:

public class Entity1
{
    public Guid Id { get; set; }
}

public class Entity2
{
    public Guid Id { get; set; }

    public Entity1 RelatedEntity { get; set; }
}
在我的例子中,每个
Entity1
可能有许多
entity2
,但据我所知,在我的数据模式中,让
Entity1
跟踪所有使用它的
entity2
是没有意义的。也许我误解了数据模型应该如何建立

(从Microsoft教程中)可以看出,为了设置
.OnDelete(DeleteBehavior.Cascade)实体之间需要有双向链接。是否有人知道这样做是否可行,即如果删除
Entity1
,它将同时使用所有
Entity2
实例?我是否必须更改数据模型,以便
Entity1
存储
Entity2的列表


谢谢

不需要任何导航属性

配置关系所需的只是一对正确的
Has{One | Many}
+
和{One | Many}
。我所说的“正确”是指以下内容-如果对应的关系端具有导航,则必须将其作为参数传递,否则不应传递lambda表达式/属性名称)

i、 在你的情况下,你可以使用

modelBuilder.Entity<Entity2>()
    .HasOne(e2 => e2.RelatedEntity)
    .WithMany() // no navigation property
您还可以使FK成为必需的(默认情况下将启用级联删除):


有关更多信息,请参阅EF Core文档的部分,尤其是。

您需要在数据库端进行更改以启用级联删除。一旦您从EF端删除,它会自动从其他表中删除。这对它进行了排序,非常感谢。令人烦恼的是,我一直在做正确的事情,只是没有应用迁移。。。
modelBuilder.Entity<Entity1>()
    .WithMany<Entity2>() // no navigation property
    .HasOne(e2 => e2.RelatedEntity)
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()