我想尝试插入到我的 SQL Server 数据库中的多个表中,但是我的第一个插入生成了一个外键,即我想在后续插入中使用它的 IDENTITY 值。我不确定如何在 LINQ to SQL 中进行此操作。我认为我可以在多个事务中执行此操作,但我更喜欢在一个地方执行此操作……也就是在 using 子句中。
我的伪代码算法如下:
- 检查 TABLE1.COL2 列中是否存在 ID 值
- 如果它不存在,则在 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(); }