Позвольте мне описать поведение, которое я получаю:
- Загрузка пользователя из базы данных: это означает, что пользователь подключен к контексту
- Создать новый объект C:
- C tempC = new C ();
- tempC.User = ранее загруженный пользователь;
- Context.AddToCSet (tempC);
- Последняя строка вызывает исключение, поскольку объект был добавлен в контекст, когда было задано свойство user.
но если я сделаю следующее:
- Загрузка пользователя из базы данных: это означает, что пользователь подключен к контексту
- Создать новый объект C:
- C tempC = new C ();
- tempC.User = ранее загруженный пользователь;
- Context.SaveChange ();
- Создайте новый Объект E, который связан с Объектом C.
- E tempE = new E ();
- tempE.C = ранее созданный C;
- Context.AddToESet (tempE);
это не выдает исключение. Я ожидал исключения, потому что к тому времени C присоединяется к контексту, что должно быть в том же случае, что и в первом примере. Но это не так. Почему и что я могу сделать, чтобы иметь некоторую последовательность?
Я планирую проверить состояние объекта (EntityState == Detached) перед добавлением его в набор, но я решил, что для начала я должен сделать что-то не так.