2010-05-26 75 views
2

可以说,我有一个表RowId的和值:LINQ获取下一行ID?

1 valueA 
2 valueB 
3 valueC 
4 valueD 

然后让我们说我删除第4行:

1 valueA 
2 valueB 
3 valueC 

所以下一行ID将是5。由于第4行被删除,我不能简单地找到表中的最后一行,并加1以获得下一行ID。我如何获得下一行ID?

谢谢!

+3

为什么你需要知道下一个自动生成的ID是什么? – Jimmy 2010-05-26 20:37:57

+0

这是在向表格中插入新行时创建表关系。 – sooprise 2010-05-26 20:40:46

+2

这应该通过SQL自动处理。研究设置自动递增的主键。否则,只要获得最后一条记录并执行+1即可,尽管这并不理想 – Jimmy 2010-05-26 20:43:42

回答

3

在LinqToSQL,如果两个类有一个主键IDENTITY列,并有连接的关联(通过的Fkey数据库或手动在设计器创建),你可以做你的两个相关项目插入这样的:

Customer c = new Customer() {Name = "Bob"}; 
Order o = new Order() {Customer = c, Quantity = 5}; 

myDataContext.InsertOnSubmit(c); 
    //submit changes will insert c and o 
    // in the right order and with all id's populated. 
myDataContext.SubmitChanges(); 
    //the id's are populated 
int customerID = c.CustomerID; 
int orderID = o.OrderID; 
customerID = o.CustomerID; 
+0

+1 - 让Linq-to-SQL处理所有这些混乱的细节,不用担心会提前猜测ID! – 2010-05-26 21:01:17

+0

我想如果你想插入两个对象,你必须要插入(o)。 c不参考o。对? – 2010-05-26 21:06:08

+0

c通过关联创建的订单属性引用o。这个相同的关联创建了Order.Customer属性。 – 2010-05-26 21:06:48

2

插入新行后,您将获得行ID。我不明白你为什么需要它,然后再插入它!