【问题标题】:How does Entity Framework insert new values?Entity Framework 如何插入新值?
【发布时间】:2010-11-07 12:26:52
【问题描述】:

我有另一个与此相关的问题,但为了清楚起见,我想将它们分开。

我偶然发现了一个问题,我无法在表中插入新行,因为它只有一列,并且该列逐渐增加和 PK。

但是,在实体框架中创建该 Set 的新对象一点也不麻烦。

 var admin = 新管理员 {};
context.Administrator.AddObject(admin);
context.SaveChanges();
int adminId = admin.adminId; //这会给我新的价值

这是如何工作的?

【问题讨论】:

    标签: c# linq entity-framework


    【解决方案1】:

    当您提交更改时,Entity Framework 对每个添加的实体执行 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。

    【讨论】:

    • 但是它是如何插入的呢?行添加()?当然不是,但它让我感到困惑,它如何在不插入任何内容时进行插入,基本上只是告诉 dbms 添加一行..
    猜你喜欢
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    相关资源
    最近更新 更多