我有表A和表B.
表B包含两列,名称和ID。
表A包含几个列和一个指向B.ID的外键列,名为B_ID
在客户端,我有我想要插入表A的所有数据,但B_ID除外。我虽然有B.Name。
使用链接到sql我需要根据Name的值检索表B中的id。如果记录不存在,我需要插入它并获取ID(这是一个标识列)。
现在我有B.ID,然后我必须在表A中插入记录。
我通过在设计器中导入表A和B来构建我的数据上下文类,我只是不确定如何在这里编写linq到sql语句。
答案 0 :(得分:2)
构建数据上下文类时,请务必先在表A和表A之间建立关联。表B.
以下内容应该让您了解如何使用与表A的子关系从表B插入或更新对象。基本上,您要检查对象B是否存在。如果存在则返回其ID。如果没有,创建对象A,将其添加到对象B,然后插入对象B.通过创建对象B,LINQ to SQL将在表A和表A中插入必要的信息。 B.
DataContext db = new DataContext();
//Build object A
ObjectTableA objA = new objA();
objA.prop1 = ...
objA.prop2 = ...
// Check to see if the object exists in Table B
var query = from b in db.TableB
where b.Name == name
select b;
ObjectTableB objb = query.FirstOrDefault();
//if objb does not exist then create and insert a new object B
if (!objb) {
objB = new ObjectTableB();
objB.Name = name;
//add objA
objB.propA = objA;
db.TableB.InsertOnSubmit(objB);
db.SubmitChanges();
}
return objB.ID;