Entity framework 在插入后使用EF的Execute命令获取最新ID

Entity framework 在插入后使用EF的Execute命令获取最新ID,entity-framework,entity-framework-4,entity-framework-6,Entity Framework,Entity Framework 4,Entity Framework 6,我使用ASP.NET 4.5上的EF6.1直接针对DB SQL Server 2008发出Insert语句。我需要在事务post insert中获取最新的ID,但是我不能完全理解代码 这就是我目前的情况: db.ExecuteStoreCommand("INSERT INTO Order ([SupplierId]) Values ({0})", SID); Int32 intId = db.ExecuteStoreQuery<Int32>("SELECT SCOPE_IDENTIT

我使用ASP.NET 4.5上的EF6.1直接针对DB SQL Server 2008发出Insert语句。我需要在事务post 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();

提前谢谢。

我的猜测是正确的。这项工作:

Int32 intId = (Int32)db.ExecuteStoreQuery<Decimal>("INSERT INTO Order ([SupplierId]) Values ({0}); SELECT SCOPE_IDENTITY();", SID).First();
希望这对别人有帮助


编辑:根据Gert的回答,我已将其从@IDENTITY改为使用SCOPE\u IDENTITY,更多信息请参见

您应该使用SCOPE\u IDENTITY。@GertArnold,谢谢。