【发布时间】:2010-11-01 10:25:24
【问题描述】:
我在多个表中插入数据。我需要知道表中最后插入的(自动递增的)ID。我需要将它用作其他表中的外键。
简而言之,我需要在 T-Sql 中替代 @@Identity。
【问题讨论】:
-
推荐使用
SCOPE_IDENTITY()而不是@@IDENTITY。
标签: .net entity-framework
我在多个表中插入数据。我需要知道表中最后插入的(自动递增的)ID。我需要将它用作其他表中的外键。
简而言之,我需要在 T-Sql 中替代 @@Identity。
【问题讨论】:
SCOPE_IDENTITY()而不是@@IDENTITY。
标签: .net entity-framework
Entity Framework 会自动加载最后插入的 id 来填充插入实体的主键列:
var customer = new Customer { Name = "Steven" };
context.AddObject(customer);
context.SaveChanges();
var id = customer.Id;
请注意,Id 属性仅在调用 SaveChanges() 后才会填充,以防模型存储部分中的自动递增 ID 列的 StoreGeneratedPattern 属性设置为“身份”或“计算”。
【讨论】:
无论如何,如果您需要 id 用于任何其他目的...为某些实体调用 EF Insert 方法会自动返回当前插入的行 id ...
var rowId=db.Insert(Entity);
【讨论】:
Insert 方法,EF 的Add 方法not返回标识值。这个答案没有意义。
您也可以使用此代码查看数据库的最后一列。
var lastColumn = context.YourTable.OrderBy(x=>x.Id).LastOrDefault();
【讨论】: