1

我有2個表有一個多對多的關係(用戶< - >權限):實體框架的DataContext強制刪除級聯,即使它被禁用

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 

異常被解僱。

注:我加載所有渴望的實體。

有沒有人知道爲什麼實體框架不會引發異常並允許此操作?

回答

0

發現的問題:如果我加載數據懶惰刪除按預期工作。例外是觸發:

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

解決方案:待定