Come convertire DbSet in Entity Framework in ObjectQuery

Sto usando l’approccio CodeFirst e ho riscontrato un problema in cui ho bisogno di convertire DbSet in ObjectQuery. Questo è quello che ho fatto per la conversione.

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

dove db è il contesto che eredita da DbContext e Request è class.

Quindi, quando provo a chiamare il metodo che si aspetta ObjectQuery come ObjectQueryMethod (objectSet), genera il seguente errore.

“Il tipo di espressione condizionale non può essere determinato perché non esiste una conversione implicita tra” System.Data.Entity.DbSet “e” System.Data.Objects.ObjectQuery “”

Qualsiasi aiuto è molto apprezzato!

Ho trovato la risposta. Naturalmente, è ansible convertire DbSet in Entity Framework in ObjectQuery utilizzando le linee di codice sottostanti.

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

dove,

  • db – Classe di contesto che eredita da DbContext .
  • RequestsDbSet definita nella class Contesto.
  • objectSet : ora può essere passato come ObjectQuery .

Grazie per la risposta corretta ‘inspiringmyself’; questo è solo per elaborare la tua risposta. Sono riuscito a farlo con un tipo generico, quindi solo per condividerlo:

 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)); } 

E ho pensato che il post precedente avrebbe potuto fare un esempio di quali criteri inviare, ecco un esempio:

  //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'");