2011-05-10 60 views
2

採取以下基於EF代碼:實體沒有得到補充

var newItem = context.Items.CreateObject(); 
newItem.ID = Guid.NewGuid(); 
newItem.Name = "Some text"; 
context.Items.AddObject(newItem); 
int count = context.Items.Count(); 

什麼會導致計數在這種情況下返回零?

回答

8

你忘

context.SaveChanges(); 

它應該是這樣的

var newItem = context.Items.CreateObject(); 
newItem.ID = Guid.NewGuid(); 
newItem.Name = "Some text"; 
context.Items.AddObject(newItem); 
context.SaveChanges(); 
int count = context.Items.Count(); 
5

@約翰是正確的。我只是添加爲什麼?在致電Count之前,您沒有撥打SaveChangesCount是從IQueryable的擴展方法,它會查詢數據庫並返回存儲實體的計數。您呼叫SaveChanges的單位未存儲實體。

如果你想未決插入的號碼,您可以撥打:

var count = context.ObjectStateManager 
        .GetObjectStateEntries(EntityState.Added) 
        .Select(e => e.Entity) 
        .OfType<Item>() 
        .Count(); 
+0

約翰的問題是我的問題的範圍內正確的,但是,你的解決方案最終被我用了一個。 – kettch 2011-05-10 22:44:35