2017-07-14 146 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