簡體   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