[英]How does Entity Framework insert new values?
我对此有另一种疑问,但出于清楚的原因,我想将它们分开。
我偶然发现了一个问题,我无法在表中插入新行,因为它只有一列,并且该列是递增和PK的。
但是,在实体框架中创建该Set的新对象根本没有问题。
var admin = new Administrator {}; context.Administrator.AddObject(admin); context.SaveChanges(); int adminId = admin.adminId; //This would give me the new value
这是如何运作的?
提交更改时,实体框架会为每个添加的实体在与管理员实体集关联的表中执行INSERT。 由于PK在数据库中自动递增,因此EF知道它不需要提供它,而是在INSERT之后取回它。 然后,它使用现在可用的(和数据库生成的)PK更新Administrator实体。
这是经典的对象关系映射工作,希望我理解您的问题?
这是EF发送以执行插入作业的确切SQL查询。
insert [dbo].[Entities] default values
select [Id]
from [dbo].[Entities]
where @@ROWCOUNT > 0 and [Id] = scope_identity()
它将在表中插入一个默认行,然后选择新行的ID。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.