我还有另一个与此相关的问题,但出于清晰的原因,我想将它们分开。
我偶然发现了一个问题,我无法在表中插入新行,因为它只有一列,并且该列逐渐增加并且PK。
但是,在Entity Framework中创建该Set的新对象完全没有问题。
var admin = new Administrator {}; context.Administrator.AddObject(admin); context.SaveChanges(); int adminId = admin.adminId; //This would give me the new value
这是如何运作的?
答案 0 :(得分:4)
当您提交更改时,Entity Framework会为每个添加的实体执行与管理员实体集关联的表中的INSERT。 由于PK在数据库中自动递增,因此EF知道它不需要提供它,而是在INSERT之后进行检索。然后它更新管理员实体,它现在可用(和数据库生成)PK。
这是经典的对象关系映射工作,我希望我理解你的问题?
以下是EF发送的用于执行插入作业的确切SQL查询。
insert [dbo].[Entities] default values
select [Id]
from [dbo].[Entities]
where @@ROWCOUNT > 0 and [Id] = scope_identity()
它在表格中插入一个默认行,然后选择新行的Id。