Как преобразовать DbSet в инфраструктуру Entity в ObjectQuery
Я использую подход CodeFirst и столкнулся с проблемой, когда мне нужно преобразовать DbSet в ObjectQuery. Это то, что я сделал для конверсии.
ObjectContext objectContext = ((IObjectContextAdapter)db).ObjectContext; ObjectSet objectSet = objectContext.CreateObjectSet();
где db – это контекст, наследующий от DbContext, а Request – class.
Поэтому, когда я пытаюсь вызвать метод, ожидающий ObjectQuery как ObjectQueryMethod (objectSet), он выдает следующую ошибку.
- В LINQ для Entities поддерживаются только конструкторы и инициализаторы без параметров
- Сколько Include я могу использовать в ObjectSet в EntityFramework для сохранения производительности?
- ASP.NET MVC 2.0 Реализация поиска в jqgrid
- Предложение "NOT IN" в LINQ to Entities
- Linq int to string
«Тип условного выражения не может быть определен, потому что нет никакого неявного преобразования между« System.Data.Entity.DbSet »и« System.Data.Objects.ObjectQuery »
Любая помощь очень ценится!
- Как создать дерево выражений LINQ, чтобы выбрать анонимный тип
- Тип узла выражения LINQ «ArrayIndex» не поддерживается в LINQ to Entities
- LEFT JOIN в LINQ для объектов?
- C # - код для заказа по свойству с использованием имени свойства в виде строки
- Как вы создаете запрос LINQ to Entities для непосредственного загрузки дочерних объектов, вместо вызова свойства Reference или Load ()
- LINQ to Entities не распознает метод
- Включить внуков в EF Query
- В чем разница между .ToList (), .AsEnumerable (), AsQueryable ()?
Я нашел ответ. Конечно, можно конвертировать DbSet в инфраструктуру Entity в ObjectQuery, используя приведенные ниже строки кода.
ObjectContext objectContext = ((IObjectContextAdapter)db).ObjectContext; ObjectSet objectSet = objectContext.CreateObjectSet ("Requests");
где,
-
db
– Наследование classа контекста изDbContext
. -
Requests
–DbSet
определенные в 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'");