2011-07-10 99 views
0

我一直在使用實體框架,總是認爲實體框架爲程序員創建了一個抽象層,但我一直在問這種類型的代碼是否可行。當我創建一個實體並且不保存數據庫上下文時,該對象不能從上下文中被取消!?有線或我對EF有疑惑!?!實體框架從內存拉對象

using (Entites db = new Entites()) 
      { 
       tblSysState state = new tblSysState() 
             { 
              Id = Guid.NewGuid(), 
              Code = "k", 
              Description ="Just teste" 
             }; 

       db.tblSysState.AddObject(state); 
       Object ft = db.tblSysState.SingleOrDefault(x => x.Code.Equals("k")); 


      } 

回答

1

查詢ObjectSet本身是可能的,但不可能。您必須訪問上下文的內部存儲。像這樣的東西應該工作:

var state = db.ObjectContext 
       .GetObjectStateEntries(EntityState.Added) 
       .Where(e => !e.IsRelationship) 
       .Select(e => e.Entity) 
       .OfType<tblSysState>() 
       .SingleOrDefault(e => e.Code == "K"); 
+0

但在這種情況下,我需要知道的狀態(添加,刪除等..)對象的你想拉,爲examaple如果你想遍歷所有狀態,你需要得到一些對象從ObjectSet和其他來自上下文的內部存儲!這不是一個通用的過程1 – mastervv

+0

你只對實體處於Added狀態感興趣,因爲其他人在數據庫中,你可以用正常的方式查詢它們。如果要查詢存儲在上下文中的任何狀態的實體,請使用'(〜EntityState.Detached)'。沒有通用的過程來查詢本地數據庫和數據庫數據,並且這是通過設計。 –