DbSet vs. ObjectSet - строковый предикат - PullRequest
0 голосов
/ 05 января 2012

Есть ли способ создать 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;
        }
    }

}

При этом происходит правильная загрузка данных, но когда я пытаюсь включить один из других объектов (экзамен содержит посещение, визит содержит пациента), ссылки не создаются.

1 Ответ

0 голосов
/ 14 июня 2012

Решено это путем копирования и настройки шаблона T4, использованного для генерации объекта контекста, для создания второго объекта контекста на основе ObjectSet.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...