我只是在設計一個Web服務,因此我沒有實際的代碼,但這可能會影響數據庫和應用程序設計。C#ADO.NET確定新自動遞增主鍵的值?
我打算有一個數據庫表(在SQL Server中),它將有一個類型爲bigint的主鍵,它是自動增量的。現在我假設在ADO.NET中,當向表中添加新記錄時,我不會設置此字段。我需要知道的是,我將如何知道剛添加的ID是什麼。當然,我可以在該字段上選擇MAX,但ADO.NET實際上是否返回新ID的值,從而節省了開銷?
舉例來說,如果我有一些像這樣的代碼:
using (MyEntities context = new MyEntities())
{
context.Table1.AddObject(new Table1()
{
StringColumn1 = "some value",
StringColumn2 = "some value"
});
context.SaveChanges();
}
如果有表1中的一個自動增量PK叫ID,我怎麼知道剛剛添加的價值?
這是使用實體框架?如果是這樣:當你插入時,EF應該照顧自動更新這些ID。如果您使用的是原始ADO.NET,請查看使用INSERT語句的OUTPUT子句,或者查看SCOPE_IDENTITY()在INSERT後面調用(在同一個SQL批處理中) – 2012-07-13 10:30:32
是的,我正在使用EF。 @marc_s - 我知道它會這樣做。這不是問題。我怎麼知道這個價值是什麼? – Jonnster 2012-07-13 10:31:28
您需要保留對要插入的對象的引用,然後在調用'.SaveChanges()'後,可以從該對象中讀出'ID'屬性。 – 2012-07-13 10:32:25