在昨天发布的EntityFramework 7的RC1中,增加了级联删除功能。
要针对每个关系禁用它,我可以使用:
builder.Entity<Site>().HasOne(e => e.Person)
.WithMany(x => x.Sites).Metadata.DeleteBehavior = DeleteBehavior.Restrict;
我想为DbContext全局禁用它,但我找不到方法。我该怎么做呢?
发布于 2015-11-27 17:54:08
有人在github项目论坛上表示,现在唯一的方法是迭代OnModelCreating(ModelBuilder builder)
方法中的所有关系,并将DeleteBehavior
属性设置为DeleteBehavior.Restrict
:
foreach (var relationship in builder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys()))
{
relationship.DeleteBehavior = DeleteBehavior.Restrict;
}
发布于 2018-04-01 19:31:14
如果您没有在模型类中的属性上使用Required
,那么默认情况下会将其生成为DeleteBehavior.Restrict
。如果要使用DeleteBehavior.Cascade
,请使用Required
。您可以通过使用with/with Required生成虚拟迁移来查看这一点。
https://stackoverflow.com/questions/33807879
复制相似问题