如何从数据库中检索最后一个插入ID

时间:2016-01-21 09:31:57

标签: c# sql asp.net-mvc entity-framework

我使用Entity Framework将数据插入到表中,但现在我需要从上次执行的查询中检索最后一个id。

这是我的代码

var filedbdata = "'" + FileTitle + "'" + "," +
                 "'" + path + "'" + "," +
                 "'" + Session["UserID"] + "'";

var query = "insert into File_Upload(file_title,file_loc,file_userid) values(" + filedbdata + ")";

db.Database.ExecuteSqlCommand(query);
db.SaveChanges();

int lastid = ??

2 个答案:

答案 0 :(得分:3)

如果你 使用 EF创建一个新对象并存储它,你就可以从EF获得新的Id - 免费,就像那样!

// create new object to insert
FileUpload fu = new FileUpload();
fu.file_title = FileTitle;
fu.file_loc = path;
fu.file_userid = Session["UserID"];

// add new object to database context and save it
db.FileUploads.Add(fu);
db.SaveChanges();

// you get back the newly created "ID" FOR FREE!
int lastid = fu.file_id;

如果您正在使用实体框架 - 请使用 EF 并停止在" raw",低级SQL

中执行所有操作

答案 1 :(得分:1)

您可以尝试使用OUTPUT,如下所示:

  

输出条款

     

作为插入操作的一部分返回插入的行。结果可以   返回处理申请表或插入表格或   表变量用于进一步处理。

var query = "insert into File_Upload(file_title,file_loc,file_userid) OUTPUT INSERTED.ID values(" + filedbdata + ")";

要检索它,您只需使用

即可
int id = (int)command.ExecuteScalar

最好使用parameterized query而不是使用字符串连接。避免SQL注入是一种标准做法。