Entity Framework - Как вставить в таблицу с внешними ключами без первоначального ввода строк в таблицу

entity-framework entity-framework-6 insert

Вопрос

Мне трудно найти точный ответ на этот вопрос, поэтому приношу свои извинения, если это лишнее.

Поэтому у меня есть 3 таблицы, которые определены так:

Person: PersonId, FirstName, LastName

Компания: CompanyId, CompanyName

Заказ: OrderId, PersonId, CompanyId

В таблице Order есть внешний ключ, определенный в столбцах PersonId и CompanyId, таким образом, класс сущности Order, сгенерированный EF, имеет свойства навигации типа Person (не PersonId) и Company.

Таким образом, чтобы вставить в таблицу заказов, мне сначала нужно запросить таблицы лиц и компаний, чтобы получить лицо и компании. Затем я могу построить объект Order, используя объекты Person и Company, и сохранить его в db.

По моему сценарию, меня передают PersonId и CompanyId.

В классическом SQL я бы просто сделал INSERT INTO Order Set (CompanyId, PersonId) - 1 вызов базы данных. Но с EF мне нужно делать 3 дБ вызовов. Это кажется излишним.

Есть ли способ обойти это?

PS - Я использую EF 6. Я знаю, что могу сгенерировать выражение и сделать его одним вызовом ... но это все равно даст два подзапроса.

Популярные ответы

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




Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему