2010-11-07 127 views
0

我有另一種問題相對於此,但我想分開他們出於清晰的原因。實體框架如何插入新值?

我偶然發現,我不能在表中插入新行,因爲它只有一列是一個問題,柱逐步增加和PK。

然而,創建集實體框架中的一個新的對象是沒有麻煩。

 var admin = new Administrator {}; 
context.Administrator.AddObject(admin); 
context.SaveChanges(); 
int adminId = admin.adminId; //This would give me the new value 

這是如何工作的?

回答

4

當你提交你的修改,實體框架執行插入到具有管理員實體集有關,每增加一個實體的表。 由於PK在數據庫中自動遞增,因此EF知道它不需要提供它,但在INSERT後檢索它。然後它使用現有的(和數據庫生成的)PK更新管理實體。

它的經典對象關係映射的工作,我希望我理解你的問題?

這裏是EF盡遣插入作業的確切SQL查詢。

insert [dbo].[Entities] default values 
select [Id] 
    from [dbo].[Entities] 
    where @@ROWCOUNT > 0 and [Id] = scope_identity() 

它插入一個默認的行中的表,然後選擇新行的ID。

+0

但它如何做插入? Row.Add()?當然不是,但它阻礙了我如何在不插入任何東西時執行插入操作,基本上只是告訴dbms添加一行。 – Phil 2010-11-07 12:40:20

+0

我精簡了我的註釋以顯示EF使用的SQL查詢。 – Eilistraee 2010-11-07 13:29:19