How to convert DbSet in Entity framework to ObjectQuery

前端 未结 2 2012
北恋
北恋 2020-12-01 21:51

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         


        
相关标签:
2条回答
  • 2020-12-01 22:01

    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'"); 
    
    0 讨论(0)
  • 2020-12-01 22:12

    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.
    0 讨论(0)
提交回复
热议问题