Adr*_*ant 23 entity-framework-core
在昨天发布的EntityFramework 7的RC1中,添加了Cascade Delete.
要根据关系禁用它,我可以使用:
builder.Entity<Site>().HasOne(e => e.Person)
.WithMany(x => x.Sites).Metadata.DeleteBehavior = DeleteBehavior.Restrict;
Run Code Online (Sandbox Code Playgroud)
我想为DbContext全局禁用它,但我找不到方法.我能怎么做 ?
Adr*_*ant 26
有人在github项目论坛上说过,现在唯一的方法就是迭代方法中的所有关系OnModelCreating(ModelBuilder builder),并将DeleteBehavior属性设置为DeleteBehavior.Restrict:
foreach (var relationship in builder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys()))
{
relationship.DeleteBehavior = DeleteBehavior.Restrict;
}
Run Code Online (Sandbox Code Playgroud)
nat*_*ter 11
现在的约定是不可配置的.当前的CascadeDelete约定仅适用于所需的关系.关系约定: efproject.net上的级联删除(官方EF7文档)如果您了解后果,可以明确禁用所需的关系.
modelBuilder.Entity<Site>()
.HasOne(p => p.Person)
.WithMany(b => b.Sites)
.IsRequired(false);
Run Code Online (Sandbox Code Playgroud)
否则(和推荐),您需要显式设置On Delete行为(如您所发现的那样).
modelBuilder.Entity<Site>()
.HasOne(p => p.Person)
.WithMany(b => b.Sites)
.OnDelete(DeleteBehavior.Restrict);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13163 次 |
| 最近记录: |