0

我有表 A 和表 B。
表 B 包含两列,名称和 ID。表 A 包含几列和一个指向 B.ID 的外键列,称为 B_ID

在客户端,除了 B_ID 之外,我拥有想要插入到表 A 中的所有数据。虽然我有 B.Name。

使用 sql 链接我需要根据 Name 的值检索表 B 中的 id。如果记录不存在,我需要插入它并取回 ID(这是一个标识列)。

现在我有了 B.ID,然后我必须在表 A 中插入记录。

我已经通过在设计器中导入表 A 和 B 来构建我的数据上下文类,我只是不确定如何在这里编写 linq to sql 语句。

4

1 回答 1

2

在构建数据上下文类时,请确保首先在表 A 和表 B 之间建立关联。

下面应该让您了解如何插入或更新表 B 中与表 A 具有子关系的对象。基本上,您检查对象 B 是否存在。如果存在,则返回其 ID。如果没有,则创建对象 A,将其添加到对象 B,然后插入对象 B。通过创建对象 B,LINQ to SQL 会将必要的信息插入到表 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;
于 2009-11-13T05:06:11.817 回答