可以说,我有一个表RowId的和值:LINQ获取下一行ID?
1 valueA
2 valueB
3 valueC
4 valueD
然后让我们说我删除第4行:
1 valueA
2 valueB
3 valueC
所以下一行ID将是5。由于第4行被删除,我不能简单地找到表中的最后一行,并加1以获得下一行ID。我如何获得下一行ID?
谢谢!
可以说,我有一个表RowId的和值:LINQ获取下一行ID?
1 valueA
2 valueB
3 valueC
4 valueD
然后让我们说我删除第4行:
1 valueA
2 valueB
3 valueC
所以下一行ID将是5。由于第4行被删除,我不能简单地找到表中的最后一行,并加1以获得下一行ID。我如何获得下一行ID?
谢谢!
在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;
+1 - 让Linq-to-SQL处理所有这些混乱的细节,不用担心会提前猜测ID! – 2010-05-26 21:01:17
我想如果你想插入两个对象,你必须要插入(o)。 c不参考o。对? – 2010-05-26 21:06:08
c通过关联创建的订单属性引用o。这个相同的关联创建了Order.Customer属性。 – 2010-05-26 21:06:48
插入新行后,您将获得行ID。我不明白你为什么需要它,然后再插入它!
为什么你需要知道下一个自动生成的ID是什么? – Jimmy 2010-05-26 20:37:57
这是在向表格中插入新行时创建表关系。 – sooprise 2010-05-26 20:40:46
这应该通过SQL自动处理。研究设置自动递增的主键。否则,只要获得最后一条记录并执行+1即可,尽管这并不理想 – Jimmy 2010-05-26 20:43:42