【问题标题】:Entity Framework DataContext enforces delete cascade even if it’s disabledEntity Framework DataContext 强制删除级联,即使它被禁用
【发布时间】:2014-01-23 12:25:56
【问题描述】:

我有 2 个具有多对多关系的表(用户 权限):

modelBuilder.Entity<User>().HasMany(x => x.Permission).WithMany()

如果用户引用了权限,我禁用了多对多关系中的“删除级联”以获得异常。

modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();

数据库架构已正确生成。 当我删除如下权限(项目)时:

_dbContext.Entry(item).State = EntityState.Deleted;
_dbContext.SaveChanges();

关系被删除,并且没有触发验证异常。 但是,当我从 SQL Server Management Studio 中删除纯 SQL 权限时:

 DELETE FROM [Permissions]
 WHERE Id = 3

异常被触发。

注意:我会加载所有实体。

有谁知道为什么实体框架不会触发异常并允许此操作?

【问题讨论】:

    标签: entity-framework frameworks entity cascade cascading-deletes


    【解决方案1】:

    发现问题:如果我延迟加载数据,删除工作会按预期进行。异常被触发:

     (The DELETE statement conflicted with the REFERENCE constraint....)
    

    解决方案:待定

    【讨论】:

      猜你喜欢
      • 2016-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 2017-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多