我使用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 = ??
答案 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注入是一种标准做法。