Вставка [Order] и [OrderItems] в LINQ - PullRequest
0 голосов
/ 27 октября 2009

Я довольно новичок в LINQ и мне было интересно, как лучше всего вставить [Order], впоследствии получить [Order]. [ID] и использовать его для сохранения некоторых [OrderItems].

Столбец ID таблицы [Order] является столбцом Identity.

Я хочу попытаться предотвратить вызов db.SubmitChanges (), получить вновь вставленный идентификатор заказа и затем снова вызвать его (db.SubmitChanges ()) при вставке связанных элементов заказа - это единственный способ сделать это хоть?

Спасибо заранее.

Ответы [ 2 ]

4 голосов
/ 27 октября 2009

Если у вас правильно настроены классы LINQ to SQL, то Order должен иметь коллекцию OrderItems.

Вы должны иметь возможность создать Order, а затем добавить новые OrderItems в коллекцию, а затем один раз вызвать db.SubmitChanges () и позволить LINQ to SQL обрабатывать проблемы с Id.

0 голосов
/ 27 октября 2009

Вам не нужно вызывать его в два отдельных шага. LINQ позаботится об этом за вас.

Если ваша база данных смоделирована правильно с использованием отношения внешнего ключа между таблицами Order и OrderItems, то сгенерированные объекты также будут иметь отношение. Они Заказ будет составлен с OrderItems. В частности, в случае отношения «один ко многим» ваш объект Order будет иметь свойство OrderItems, которое будет коллекцией объектов OrderItem.

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

Итак, вам нужно всего лишь один раз вызвать SubmitChanges.

db.Orders.InsertOnSubmit(myOrder);
db.SubmitChanges();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...