Есть ли способ создать ObjectSet
из DbSet
?
Некоторая справочная информация: у меня есть модель (EF 4.2), которая возвращает DbSets в контексте объекта. Мне нужно модифицировать его для поддержки API из более старой модели данных (EF4). Более старая модель данных возвращала наборы объектов, и несколько методов в API (служба WCF 3.5, размещенная на IIS) принимают предикаты строки запроса, которые были переданы более старой модели. Мне нужно повторить это поведение в новой модели, однако метод DbSet.Where
не принимает параметр предиката строки. Я смог заставить его работать частично, создав набор объектов из контекста объекта (ObjectContext.CreateObjectSet<T>(string)
), но, делая это таким образом, я не могу заставить работать какие-либо операторы include.
Есть ли способ передать строковые предикаты в DbSet
, или есть способ получить ObjectSet
из DbSet
, в котором метод .Include
загружает связанные наборы данных?
Спасибо заранее (некоторые фрагменты кода ниже):
Класс для создания 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;
}
}
}
При этом происходит правильная загрузка данных, но когда я пытаюсь включить один из других объектов (экзамен содержит посещение, визит содержит пациента), ссылки не создаются.