2017-07-14 151 views
0

我在我的數據庫中有一個表用於保存例如事務,此表具有一個ID,它是主鍵和自動增量狀態,以便在使用以下時使用數據庫生成ID代碼:db.tblTransfers.Add(Transfer);獲取已添加的行號C#

我的代碼是:

  tblTransfer Transfer = new tblTransfer 
     { 
      AccountID = int.Parse(_AID), 
      Amount = int.Parse(txtAmount.Text), 
      TransType = cmbType.Text, 
      CashType = cmbDetail.Text, 
      TransferDate = dateTimeSelector1.GetText("yyyy/MM/dd"), 
      Describtion = txtDetail.Text 
     }; 
     db.tblTransfers.Add(Transfer); 
     db.SaveChanges(); 

如何找到這一行後此行生成的ID?有沒有任何命令來獲取添加的行的細節,所以我可以得到ID? PS)由於在用戶程序中刪除一些事務,所以ID序列在表中的序列中可能存在間隙;所以我不能得到直接從這個代碼幫助: db.tblTransfers.Count();

在此先感謝

+0

計數不會工作,Max函數會假設他們自動增量。還有一種方法可以從受影響的行中獲取值。你在用什麼數據庫? –

+0

SQL Server管理和使用System.Data.Entity;我是C#新手,希望這有助於! – StudioX

+2

如果這是實體框架,調用'SaveChanges()'後您的'Transfer'對象的ID是否被填充? – David

回答

-1

通常情況下,生成的ID添加到對象後

db.SaveChanges(); 

但如果你需要猜測ID之前保存更改你可以使用最大加1代替計數

db.tblTransfers.Max(x=> x.Id + 1) 
+0

當然....除非其他人在SaveChanges調用之前添加記錄。 – Steve

+0

@Steve你是絕對正確的,但也許他需要猜測它或這樣的小應用程序,如測試或什麼 –

+0

好主意,但如果有人刪除最後一項,下一個Id是+2的最大值和錯誤發生。 – StudioX