I am using CodeFirst approach and struck with an issue where I need to convert DbSet to ObjectQuery. This is what I did for conversion.
ObjectContext objectC
Thanks for the correct answer 'inspiringmyself'; this is just to elaborate on your answer. I managed to do this with a generic type, so just to share it:
private List<T> GetByCustomCriteria<T>(string criteria) where T: class
{
var objectContext = ((IObjectContextAdapter)_myModelEntities).ObjectContext;
//note: _myModelEntities is a DbContext in EF6.
var objectSet = objectContext.CreateObjectSet<T>();
return new List<T>(objectSet.Where(criteria));
}
And I thought the above post could do with an example of what criteria to send so here's an example:
//sample criteria for int field:
var myClientById = GetByCustomCriteria<Client>("it.Id == 1");`
//sample criteria for string field, note the single quotes
var myClientByName = GetByCustomCriteria<Client>("it.Surname == 'Simpson'");
I found the answer. Of course, it is possible to convert DbSet in Entity framework to ObjectQuery using the below lines of code.
ObjectContext objectContext = ((IObjectContextAdapter)db).ObjectContext;
ObjectSet<Request> objectSet = objectContext.CreateObjectSet<Request>("Requests");
where,
db
- Context class inherting from DbContext
. Requests
- DbSet<Request>
defined in Context class. objectSet
- Can now be passed as ObjectQuery
.