Добавление новой записи в EF с существующим родителем - PullRequest
3 голосов
/ 30 марта 2011

Я использую Entity Framework с набором из 3 разных таблиц в иерархии. Думайте ApartmentUnit -> ApartmentComplex -> Владелец организации. У каждого есть первичный ключ и внешний ключ для его владельца в базе данных. Когда я построил модель EF, она создала свойства для каждого из них. Действительно, сохранить новые экземпляры каждого довольно просто. Я также узнал, например, что для добавления нового подразделения мне сначала нужно добавить организацию, добавить ее в новый комплекс, а затем добавить это в новый модуль перед сохранением. Немного работы, но это имеет смысл.

Теперь, когда я запутался, у меня есть новая квартира, но она живет в существующем комплексе. Я могу создать новый сложный объект с соответствующими свойствами и присоединить его к новому модулю, но когда я иду, чтобы сохранить модуль, платформа выявляет нарушение первичного ключа в таблице apartmentComplex, так как пытается добавить комплекс, который я прикрепил как НОВЫЙ комплекс, а не существующий.

Мне кажется, что обходной путь заключается в том, чтобы сначала пойти и получить новый экземпляр комплекса, а не создавать его - в сущности, позволяя EF создать его вместо меня - но это означало бы еще одно обратное путешествие и кажется излишним мне. Есть ли более простой способ сохранить мою новую квартиру?

1 Ответ

2 голосов
/ 30 марта 2011

Вы можете создать существующий комплекс, не заходя в БД, но вы должны прикрепить его к контексту перед сохранением.

Complex existingComplex = new { ID = 1234 };
entitiesContext.AttachTo("Complexes", existingComplex);
newAppartment.Complex = existingComplex;
entitiesContext.SaveChanges();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...