Как преобразовать DbSet в инфраструктуру Entity в ObjectQuery

Я использую подход CodeFirst и столкнулся с проблемой, когда мне нужно преобразовать DbSet в ObjectQuery. Это то, что я сделал для конверсии.

ObjectContext objectContext = ((IObjectContextAdapter)db).ObjectContext; ObjectSet objectSet = objectContext.CreateObjectSet(); 

где db – это контекст, наследующий от DbContext, а Request – class.

Поэтому, когда я пытаюсь вызвать метод, ожидающий ObjectQuery как ObjectQueryMethod (objectSet), он выдает следующую ошибку.

«Тип условного выражения не может быть определен, потому что нет никакого неявного преобразования между« System.Data.Entity.DbSet »и« System.Data.Objects.ObjectQuery »

Любая помощь очень ценится!

Я нашел ответ. Конечно, можно конвертировать DbSet в инфраструктуру Entity в ObjectQuery, используя приведенные ниже строки кода.

 ObjectContext objectContext = ((IObjectContextAdapter)db).ObjectContext; ObjectSet objectSet = objectContext.CreateObjectSet("Requests"); 

где,

  • db – Наследование classа контекста из DbContext .
  • RequestsDbSet определенные в classе Context.
  • objectSet – теперь можно передать objectSet ObjectQuery .

Спасибо за правильный ответ «вдохновляющий»; это просто для уточнения вашего ответа. Мне удалось сделать это с общим типом, поэтому просто поделиться им:

 private List GetByCustomCriteria(string criteria) where T: class { var objectContext = ((IObjectContextAdapter)_myModelEntities).ObjectContext; //note: _myModelEntities is a DbContext in EF6. var objectSet = objectContext.CreateObjectSet(); return new List(objectSet.Where(criteria)); } 

И я подумал, что вышеупомянутый пост мог бы сделать пример того, какие критерии для отправки, вот пример:

  //sample criteria for int field: var myClientById = GetByCustomCriteria("it.Id == 1");` //sample criteria for string field, note the single quotes var myClientByName = GetByCustomCriteria("it.Surname == 'Simpson'"); 
  • Лучший способ проверить, существует ли объект в Entity Framework?
  • большая проблема в преобразовании строки в datetime с использованием linq-to-entity
  • Сравнение с регистром LINQ to Entities
  • «Дата» не поддерживается в LINQ to Entities. Поддерживаются только инициализаторы, сущности и свойства навигации сущности
  • Метод не может быть переведен в выражение хранилища
  • Указанный член типа не поддерживается в LINQ to Entities. Поддерживаются только инициализаторы, сущности и свойства навигации сущности
  • Указанный член типа «Дата» не поддерживается в LINQ to Exities Exception
  • Значение cast для значения «Int32» не выполнено, поскольку материализованное значение равно null
  • Entity Framework: запрос дочерних объектов
  • Linq to Entities, случайный порядок
  • «Лямбда-выражение с телом оператора не может быть преобразовано в дерево выражений»
  • Давайте будем гением компьютера.