2012-01-04 20 views
0

無論如何,從DbSet創建ObjectSetDbSet與ObjectSet - 字符串謂詞

一些背景信息:我有一個模型(EF 4.2)在對象上下文中返回DbSets。我需要改造它以支持來自舊數據模型(EF4)的API。舊數據模型返回對象集,API中的幾個方法(一個IIS託管的WCF 3.5服務)接受傳遞給舊模型的查詢字符串謂詞。我需要在新模型中複製此行爲,但DbSet.Where方法不接受字符串謂詞參數。我能夠通過從對象上下文(ObjectContext.CreateObjectSet<T>(string))創建一個對象集來部分工作,但是這樣做似乎無法使任何包含語句正常工作。

有沒有辦法要麼通字符串謂詞爲DbSet,還是有一種方式來獲得從DbSet其中.Include方法加載相關數據集的ObjectSet

感謝advnce(下面的一些代碼片段):

類來創建ObjectSet(所以我初始化我的背景和,而不是使用DbSet在ClinicalContext.Exams等返回的這些,我得到的基本對象的上下文並創建從一個EntitySet使用將被包含在DbSet相同的對象。

public class ExamServicesEntities 
{ 
    private ClinicalContext _Context; 
    public ExamServicesEntities(ClinicalContext context) 
    { 
     _Context = context; 
    } 

    private ObjectSet<Exam> _ExamEntities; 
    public ObjectSet<Exam> Exams 
    { 
     get 
     { 
      if (_ExamEntities == null) 
      { 
       _ExamEntities = _Context.ObjectContext.CreateObjectSet<Exam>("Exams"); 
      } 
      return _ExamEntities; 
     } 
    } 

    private ObjectSet<Visit> _VisitEntities; 
    public ObjectSet<Visit> Visits 
    { 
     get 
     { 
      if (_VisitEntities == null) 
      { 
       _VisitEntities = _Context.ObjectContext.CreateObjectSet<Visit>("Visits"); 
      } 
      return _VisitEntities; 
     } 
    } 

}

這樣做正確加載數據,但當我嘗試包括其他對象之一(考試包含訪問,訪問包含患者)時,不會構建引用。

回答

0

通過複製和調整用於生成上下文對象的T4模板以基於ObjectSet生成第二個上下文onject來解決此問題。