.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()