2010-06-17 70 views
0

我正在构建一个ASP.NET MVC网站,它使用LINQ to SQL连接到SQL Server,其中我有一个具有IDENTITY bigint主键的表表示ID的列。处理自动递增在LINQ to SQL中使用IDENTITY SQL Server字段#

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

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

是对正确方法:

  1. 创建具有IDENTITY列
  2. 做一个InsertOnSubmit()和的SubmitChanges()的目标对象提交到数据库表
  3. 获取对象的ID属性的值

回答

1

只有当您调用SubmitChanges时才会生成标识,因此列出的方法是可行的选项。

然而,您可以做的是在其他对象上设置FK对象而不是ID,LINQ to SQL将为您解决问题。

EG:如果TableA.TableBID是一个FK到TableB.TableBID然后你指的是服用:

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(); 

这是不是更短的代码,逐这个例子,但它允许只有1,你犯通常是结构件好事点。

+0

太好了,谢谢!即将实施。 – 2010-06-17 04:19:26