2012-12-09 50 views
2

有沒有一種方法來添加對象德的DataContext沒有提交的修改,當我使用到上下文的EntityFramework 4添加對象的SaveChanges沒有

ctx.Articles.AddObject(newart); 

newart不會出現 INTHè方面ctx中,只有這樣我能做到這一點是saveing改變ctx.SaveChanges,不幸的是更改保存到數據庫,&我不想,是有辦法做到這一點,任何幫助將是讚賞

回答

3

可能在EF4工作

你應該能夠通過你的ObjectContext

var articles = ctx.ObjectStateManager 
        // Get all entries for added/changed/modified entities 
        .GetObjectStateEntries(EntityState.Added | 
              EntityState.Unchanged | 
              EntityState.Modified) 
        // select the entity objects from the entries 
        .Select(entry=>entry.Entity) 
        // we're only interested in Article objects 
        .OfType<Article>(); 

ObjectStateManager來獲取所有當前跟蹤的對象:因爲我還沒有安裝EF4所以我不能」 t驗證此解決方案。但是我記得前段時間成功做到了這一點:)。當有非常大的對象來完成它可能不是很高性能的設置,雖然...

Works爲EF 5

可以使用DbSet類的Local屬性。此屬性表示Context所當前跟蹤的對象(即當前加載和/或本地添加而不刪除那些對象的所有對象)。訪問Local屬性從不會執行數據庫查詢。

所以,你可以使用ctx.Articles.Local並獲得其中包含您的newart對象

+0

是EF4 – S3ddi9

+0

是有效@MartinStettner我相信這是(與前面的查詢加載的任何對象一起)的數據集,但我沒有快速找到關於此的任何信息(並且我目前只安裝了EF5)。但是你應該可以很容易地驗證EF4中是否存在'Local'屬性:如果它存在,我很確定它的工作方式與EF5相同... – MartinStettner

+0

不,它不存在於EF4上,也許它一個新功能 – S3ddi9

相關問題