Я очень новичок в Entity Framework, поэтому извиняюсь, если это очень плохой вопрос, но я не смог найти решение, которое имеет смысл для меня. Хотя моя проблема сложная, я попытаюсь ее упростить. Предположим, у меня две модели Company и CompanyAddress.Entity Framework - Как добавить объекты, ссылающиеся друг на друга, не зная первичного ключа
+--------------------Company---------------------------------------+
| int CompanyId
| string CompanyName
|
| virtual <ICollection>CompanyAddress address // Navigation Property
+-------------------------------------------------------------------+
И
+--------------------CompanyAddress---------------------------+
| int CompanyAddressId
| string Address
|
| int CompanyAddressId // Foreign Key to Address Table
| virtual CompanyAddress address // Related Navigation Property
+--------------------------------------------------------------+
Как можно видеть лицо компании может иметь более одного CompanyAddress. В моем проекте ASP.NET MVC у меня также есть ViewModel.
+--------------------CompanyCreateViewModel----------------+
| Company company
| CompanyAddress address
+---------------------------------------------------------+
Эти два свойства заполнены на виду и переданы контроллеру без проблем. Теперь проблема для меня начинается. Как мне вставить эти два объекта?
Предположим, что я вставляю объект Company сначала, а не захватываю его primaryKey с помощью оператора select и присваиваю это значение внешнему ключу CompanyAddress и вставляем его. Однако это не имеет смысла для меня, так как мне нужно сделать еще один запрос для первичного ключа.
Как я должен вставлять свои объекты, какой лучший подход? Извините за долгий вопрос и спасибо.
Я не понимаю этого утверждения, которое вы сделали «Однако это не имеет смысла для меня, так как мне нужно сделать еще один запрос для первичного ключа». - Почему, по-вашему, вам нужно сделать еще один запрос для того же первичного ключа ключ? Как только вы вызываете SaveChanges() для Компании, у вас есть PrimaryKey в этом объекте. Назначьте его внешнему ключу для CompanyAddress и снова вызовите SaveChanges(). – TheGeekYouNeed
Хмм, не знал этого. Как я уже сказал, я очень новичок в orm и ef. В любом случае, который решил мою проблему :), пожалуйста, напишите как ответ, чтобы я мог его принять. Спасибо ... –
Рад помочь :) – TheGeekYouNeed