使用EF的执行命令挣扎,以便在插入后获得最新的ID

时间:2015-01-26 16:04:52

标签: entity-framework entity-framework-4 entity-framework-6

我正在使用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();

提前致谢。

1 个答案:

答案 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