EF 4.1 База данных Первый подход.
Допустим, у меня есть эта схема таблицы
Пользователи 1 --- M UserRoles M --- 1 роли
Каскадное удаление настраивается во внешних ключах
В таблице UserRoles есть дополнительные столбцы, такие как CreatedDate, поэтому я создаю модель для UserRoles и сопоставляю ее соответственно.
Я получаю следующие модели:
User
----
int Id
string Name
List<UserRoles> UserRoles
UserRoles
---------
int UserId
int RoleId
DateTime CreatedDate
User User
Role Role
Role
----
int Id
string Name
List<UserRoles> UserRoles
Если у меня правильная конфигурация, могу ли я удалить пользователя и удаляются ли строки ролей пользователя БЕЗ очисткиколлекцию UserRoles вручную?
Так что я могу просто сделать это:
DbContext.Entry(user).State = EntityState.Deleted;
DbContext.SaveChanges();
Или я ДОЛЖЕН сделать это:
user.UserRoles.Clear();
DbContext.Entry(user).State = EntityState.Deleted;
DbContext.SaveChanges();
Мое тестирование показывает, что Я ДОЛЖЕНОчистите дочернюю коллекцию, но я нахожу противоречивую информацию о том, что, если у меня правильно установлена каскадная установка, она должна работать только путем удаления пользователя.
Когда я НЕ очищаю UserRoles, я получаю эту ошибку:
Отношение не может быть изменено, потому что одно или несколько свойств внешнего ключа не могут быть обнулены
Спасибо за помощь в разъяснении этого!