Entity Framework AddTo несоответствие функции? - PullRequest
0 голосов
/ 27 января 2009

Позвольте мне описать поведение, которое я получаю:

  • Загрузка пользователя из базы данных: это означает, что пользователь подключен к контексту
  • Создать новый объект 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) перед добавлением его в набор, но я решил, что для начала я должен сделать что-то не так.

1 Ответ

0 голосов
/ 28 января 2009

Предполагая, что между User и C существует отношение 1 ко многим, вы можете использовать другой синтаксис для добавления C к родительскому User. Вместо tempC.User = previously loaded user; вы, вероятно, захотите добавить tempC как дочерний элемент User. Вот что я имею в виду:

C tempC = new C(); 
(previously created user).C.Add(tempC);
Context.AddToCSet(tempC);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...