У меня есть объекты заказа и деталей заказа с OrderID в качестве внешнего ключа в таблице деталей заказа.OrderID - это столбец идентификатора для Order, для которого задано автоматическое создание.
Когда я выполняю вставку следующим образом (жестко закодированные значения для простоты):
LINQ1DataContext db = new LINQ1DataContext();
Order order = new Order();
order.OrdersCustomerID = 1;
order.OrdersDate = time;
db.Orders.InsertOnSubmit(order);
OrdersDetail oDetail = new OrdersDetail();
oDetail.OrdersDetailID = order.OrdersID;
oDetail.OrdersDetailProdID = 1;
oDetail.OrdersDetailQty = 6;
oDetail.OrdersDetailUnitPrice = 2.58m;
db.OrdersDetail.InsertOnSubmit(oDetail);
db.SubmitChanges();
Это приводит к конфликту сОграничение FOREIGN KEY 'ошибка.Я обнаружил, что это происходит потому, что в InsertOnSubmit (order) не генерируется orderID.Когда после этого выполняется SubmitChanges (), OrdersDetailID не совпадает с OrdersID и выдает ошибку.OrderID будет сгенерирован только после 'submitchanges ()'.
Если добавить дополнительный db.SubmitChanges ();после db.Orders.InsertOnSubmit (order) orderid автоматически генерируется, как я ожидаю, а затем orderDetails вставляет нормально.
Мой вопрос: нормально ли вставлять submitChanges после каждого insertOnSubmit при вставке в 2?таблицы (parent-child), как это?
Я думал, что идея insertOnSubmit заключается в том, что я могу сделать пару вставок в разные таблицы, а LINQ to SQL позаботится обо всех деталях, следующих за SubmitChanges.
спасибо,