1

У меня есть 2 таблицы с многими многими соотношение (пользователей < -> Права доступа):Entity Framework 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 из SQL Server Management Studio:

DELETE FROM [Permissions] 
WHERE Id = 3 

исключение обжигали.

Примечание: Я загружаю все объекты нетерпеливо.

У кого-нибудь есть идея, почему Entity Framework не вызывает никаких исключений и разрешает эту операцию?

ответ

0

Неисправность найдена: Если я загружаю данные ленивыми, работа по удалению выполняется, как ожидалось. Исключение обжигают:

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

Решение: В ожидании