Logo UGIdotNET

Recuperare il codice SQL generato da Entity Framework

Entity Framework permette di conoscere il codice che sarà generato da una query mediante il metodo ToTraceString della classe ObjectQuery. Nel caso del dominio generato a partire dal database Northwind, sarà quindi possibile ricavare nel seguente modo il codice generato per estrarre l'insieme dei clienti:

using(NorthwindEntities domain = new NorthwindEntities())
{
    ObjectQuery<Customer> query = domain.CustomerSet;
    string sql = query.ToTraceString();
}

Poichè gli expression tree di Entity Framework sono di tipo ObjectQuery<T>, effettuando un cast verso di esso sarà possibile ricavare il codice generato da una query arbitraria:

using(NorthwindEntities domain = new NorthwindEntities())
{
    string sql = ((from c in domain.CustomerSet where c.City == "London" orderby c.CompanyName select c) as ObjectQuery<Customer>).ToTraceString();
}

Utilizzando l'implementazione non generica di ObjectQuery, infine, è possibile conoscere il codice generato da una query che si avvale degli anonymous types:

using(NorthwindEntities domain = new NorthwindEntities())
{
    string sql = ((from c in domain.CustomerSet where c.City == "London" orderby c.CompanyName select new { c.CompanyName, c.ContactName}) as ObjectQuery).ToTraceString(); }

Technorati tags: 
Autore: Andrea Saltarello
Data: 01 febbraio 2009
Ultimo aggiornamento: 01 febbraio 2009
Categorie:  Data Access
Tag:  entity framework linq

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185