Linq to SQL插入/选择外部/主要记录

时间:2009-11-13 04:16:11

标签: linq-to-sql foreign-key-relationship

我有表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语句。

1 个答案:

答案 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;