0

我正在构建一个 ASP.NET MVC 站点,该站点使用 LINQ to SQL 连接到 SQL Server,其中我有一个表,其中有一个表示 ID 的 IDENTITY bigint 主键列。

在我的一个代码方法中,我需要创建该表的一个对象以获取其 ID,我将根据另一个表(FK-to-PK 关系)将其放入另一个对象中。

IDENTITY 列值是在什么时候生成的,如何从我的代码中获取它?

是正确的方法:

  1. 创建具有 IDENTITY 列的对象
  2. 执行 InsertOnSubmit() 和 SubmitChanges() 将对象提交到数据库表
  3. 获取对象的ID属性值
4

1 回答 1

1

仅当您调用 SubmitChanges 时才会生成身份,因此您列出的方法是一个可行的选择。

但是,您可以做的是在另一个对象上设置 FK 对象而不是 ID,LINQ to SQL 将为您解决。

EG:如果 TableA.TableBID 是 TableB.TableBID 的 FK,那么您指的是采取​​:

TableB b = new TableB();
context.TableB.InsertOnSubmit(b);
context.SubmitChanges();
TableA a = new TableA();
a.TableBID = b.TableBID;
context.TableA.InsertOnSubmit(a);
context.SubmitChanges();

但是您可以通过像这样为 FK 设置对象来在单个提交中完成它:

TableB b = new TableB();
context.TableB.InsertOnSubmit(b);
TableA a = new TableA();
a.TableB = b;
context.TableA.InsertOnSubmit(a);
context.SubmitChanges();

在这个例子中,这在代码方面并没有更短,但它确实只允许你提交一个地方,这在结构上通常是一件好事。

于 2010-06-17T04:14:06.390 回答