У меня есть три таблицы - Context, Session и User.И ниже приведена их упрощенная структура.
Пользователь:
UserId (Int, PK)
Email (Varchar (100))
Context:
ContextId (Int, PK)
UserId (Int, FK из таблицы пользователей)
CurrentSessionId (Int, Nullable, FK из таблицы сеансов)
Session:
SessionId (Int, PK)
UserId (Int, FK из таблицы User)
ContextId (Int, FK из таблицы Context)
Ниже приведена последовательность в моем коде дляудалить сущность пользователя.
1) Обновить таблицу CurrentSessionId для контекста до нуля, где UserId = UserId для удаления.
2) Удалить все сеансы, соответствующие пользователю
3) Удалить все контексты, соответствующиеПользователь
4) Окончательно удалить пользователя.
5) Вызвать ObjectContext.SaveChanges ()
При вызове ObjectContext.SaveChanges () я получаю следующее исключение -
Невозможно определить действительный порядок для зависимых операций.Зависимости могут существовать из-за ограничений внешнего ключа, требований модели или сгенерированных в хранилище значений.
Я полагаю, что EF4 запутывается, определяя порядок выполнения первых 3 операторов. Можно ли указать EF4, какие операторы выполнять первыми, а какие выполнять следующим?
Один из способов обойти это - вызвать SaveChanges () после первого шага, а затем вызвать его снова послеШаг четвертый.Но я хотел бы знать, есть ли другое элегантное решение, кроме этого.