繁体   English   中英

实体框架如何插入新值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM