無論如何,從DbSet
創建ObjectSet
?DbSet與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;
}
}
}
這樣做正確加載數據,但當我嘗試包括其他對象之一(考試包含訪問,訪問包含患者)時,不會構建引用。