2010-05-26 83 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。我不明白你爲什麼需要它,然後再插入它!