我正在使用ASP.NET 4.5上的EF6.1直接针对数据库(SQL Server 2008)发出一个Insert语句。我需要在事务后插入中获取最新的ID,但是我无法弄清楚代码。
这就是我现在所拥有的:
db.ExecuteStoreCommand("INSERT INTO Order ([SupplierId]) Values ({0})", SID);
Int32 intId = db.ExecuteStoreQuery<Int32>("SELECT SCOPE_IDENTITY()").First();
var myOrder = db.Order.First(r => r.Id == intId);
以上示例已简化。是否可以组合命令,例如,或者什么?
Int32 intId = db.ExecuteStoreQuery<Int32>("INSERT INTO Order ([SupplierId]) Values ({0}); SELECT SCOPE_IDENTITY()",SID).First();
提前致谢。
答案 0 :(得分:0)
我的怀疑是正确的。这有效:
Int32 intId = (Int32)db.ExecuteStoreQuery<Decimal>("INSERT INTO Order ([SupplierId]) Values ({0}); SELECT SCOPE_IDENTITY();", SID).First();
希望这有助于某人。
编辑:根据Gert的回答,我已将此更改为@@ IDENTITY以使用SCOPE_IDENTITY,更多信息也可在More Information about Scope_Identity