2011-08-05 58 views
2

我用這種風格,當我從數據庫中獲得如何在DataContext處理後保留實體對象?

public class User 
{ 
    public static List<User> GetUsers() 
    { 
     List<User> users = new Users(); 
     using (var context = new DataContext()) 
     { 
      users = context.Users.ToList(); 
     } 

     return users; 
    } 
} 

數據我從數據庫中的數據後,然後我要過濾用戶喜歡這個

List<User> userResultList = User.GetUsers(); 
userResultList.Where(u => u.IsActive == true); 

但不能過濾和我得到這個錯誤

對於需要連接的操作,ObjectContext實例已經處理完畢,不能再使用 。

我的問題: 佈置的DataContext後過濾結果對象可能的方式是什麼?

非常感謝您的支持。

更新!

我覺得有可能,如果我創建方法範圍的新的DbContext,我想要檢索的數據

是不是不夠好方法嗎?

public class User 
    { 
     public static List<User> GetUsers() 
     { 
      List<User> users = new Users(); 

      var context = new DataContext()) 
      users = context.Users.ToList(); 

      return users; 
     } 
    } 
+1

什麼是您的'IsActive'屬性實現?它是持久財產還是一些計算財產? –

+0

我在您發佈的代碼中看不到問題。你需要DataContext作爲檢索部分(在你的情況下)。使用linq你可以過濾集合。所以要回答你的問題,你可以在DataContext被處理後過濾列表。也許這個錯誤有不同的原因。 –

+0

在執行堆棧中序列化的列表是否更高?通過WCF服務,或類似? –

回答

0

不知你是否克隆列表中會得到解決的錯誤?

User[] L = new User[users.Count]; 
users.CopyTo(L); 

猜測:

你有什麼看起來像它應該的表面上工作。

我不知道ToList()返回的東西是從列表繼承的東西,並保留了一些隱藏的上下文感知。

我現在無法測試這個想法。稍後要考慮一些事情。

相關問題