2013-01-24 29 views
15

Sono un nuovo principiante del framework Entity.Impossibile trovare il metodo CreateQuery()

e non riesco a trovare il seguente metodo di CreateQuery()


enter image description here

perché non riesco a trovare questo metodo? !!

+1

Non ne hai bisogno. Se è necessario recuperare i valori di 'PersonCreditCards', basta' context.PersonCreditCards.Where (criteri) '. Si chiama LinQ to Entities. Ricerca su questo. –

+2

voglio imparare anche 'EntitySQLQuery'. voglio usare questo metodo :) –

risposta

19

Poiché ESQL è stato considerato un caso di utilizzo avanzato, non esiste un'API semplice da DbContext. È possibile accedere alla ObjectContext che esegue il tuo DbContext di fare ciò che si vuole:

((IObjectContextAdapter)context).ObjectContext.CreateQuery<Person>("esql..") 

correlati: http://thedatafarm.com/blog/data-access/accessing-objectcontext-features-from-ef-4-1-dbcontext/

Come suggerito lì, si può anche aggiungere un metodo (o proprietà) ObjectContext alla classe contesto:

public class BloggingContext : DbContext 
{ 
    public DbSet<Blog> Blogs { get; set; } 
    public DbSet<Post> Posts { get; set; } 

    public ObjectContext ObjectContext() 
    { 
     return (this as IObjectContextAdapter).ObjectContext; 
    } 
} 
7

Prima di tutto, questa non è la soluzione nativa per l'interrogazione in EF. Si prega di imparare il più LINQ possibile e poi, se si sa che si ha realmente bisogno i metodi alternativi, ricadere createQuery()

Ma, è possibile ottenere il risultato desiderato con la fusione per System.Data.Entity.Core.Objects.IObjectContextAdapter in questo modo:

(context as IObjectContextAdapter).ObjectContext.CreateQuery

Inoltre, è possibile eseguire comandi SQL con:

context.Database.SqlQuery<>() e context.Database.ExecuteSqlCommand()

Spero che questo aiuti

Problemi correlati