Я хочу попробовать и вставить в несколько таблиц в моей базе данных SQL Server, однако одна из моих первых вставок генерирует внешний ключ, который является значением IDENTITY, которое я хочу использовать в моем последующие вставки. Я не уверен, как это происходит с LINQ to SQL. Я думаю, что могу сделать это в нескольких транзакциях, но я предпочитаю делать это в одном месте ... иначе в разделе использования.Вставка нескольких LINQ to SQL с использованием IDENTITY из предыдущей вставки
Мой алгоритм псевдо-код выглядит следующим образом:
- Проверьте значение идентификатора существует в колонке TABLE1.COL2
- Если он не существует, то вставить новую строку в TABLE1
- Получить внешний ключ значение этой вновь вставленной строки из столбца TABLE1.COL1.
Создайте объект с новым значением внешнего ключа и обновите TABLE2.
using (var sms = new SmsDataDataContext(connection_string) { foreach(SomeObject i in ListofObject) { TABLE1 t1 = CheckID(sms, i.ID); if (t1== null) { TABLE1 new_row = new TABLE1(); sms.TABLE1.InsertOnSubmit(new_row); //Ideally I want to do something like this even though i dont think it will work. sms.SubmitChanges(); TABLE2 update_row = new TABLE2(); update_row.ID = new_row.COL1.value; //has the newly created identity value from my last insert. //Assume this update_row exist in my TABLE2 table. sms.TABLE2.InsertOnSubmit(update_row); } } sms.SubmitChanges(); }