DarioSantarelli.Blog("UgiDotNet");

<sharing mode=”On” users=”*” />
posts - 176, comments - 105, trackbacks - 3

My Links

News


This is my personal blog. These postings are provided "AS IS" with no warranties, and confer no rights.




Tag Cloud

Archives

Post Categories

My English Blog

[Entity Framework] EntityClient

EntityClient (namespace System.Data.EntityClient) è un provider che l’EntityFramework mette a disposizione per accedere ai dati descritti da unEntity Data Model (EDM), ovvero una sorta di gateway per query sul modello concettuale e non sulla relativa rappresentazione fisica. 
Le query invocabili dall’ EntityClient vanno dunque scritte in un dialetto di SQL chiamato “EntitySQL”: a runtime, la pipeline compila il testo EntitySQL in un command tree che viene passato al data provider sottostante per la generazione del comando SQL nativo. Dietro le quinte, infatti, EntityClient utilizza i provider ADO.NET per accedere alle sorgenti dati ( es. SqlClient per SQL Server ).  L’aspetto interessante è che i risultati di una query EntitySQL possono non limitarsi a semplici tabelle, bensì possono contenere anche gerarchie complesse.
In generale, l’uso di EntityClient è consigliabile in applicazioni model-based che richiedono particolari performance nella misura in cui non si necessita della materializzazione delle Entities a partire da resultset, bensì di un IDataReader consumabile direttamente magari per materializzazioni di oggetti specifici.
In qualità di provider ADO.NET a tutti gli effetti, EntityClient segue i soliti pattern Connection-Command-Parameter-DataReader, etc. dove le suddette classi sono precedute dal prefisso “Entity”. Ecco un esempio di paginazione dati usando EntityClient:

public List<string> GetProductNames(int pageNumber, int pageSize)
{
 
List<string> productNames = new List<string>();
 
using (EntityConnection conn = new EntityConnection("name=NorthwindEntities"))
 
{
   
string cmdText = string.Format("SELECT VALUE v FROM NorthwindEntities.Products AS v ORDER BY v.ProductName SKIP {0} LIMIT {1}", (pageNumber * pageSize).ToString(), pageSize);                  

   
using (EntityCommand cmd = new EntityCommand(cmdText, conn))
   
{
     
conn.Open();    
     
using(EntityDataReader reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess))               
     
{
       
while (reader.Read()) productNames.Add(reader["ProductName"].ToString());
     
}                                                
   
}
  
}
  
return productNames;
}

 

Technorati Tag:

Print | posted on lunedì 16 febbraio 2009 02:03 |

Feedback

Gravatar

# re: [Entity Framework] EntityClient

Purtroppo molte persone confondono EF con LINQ e quindi fanno query su EF solo tramite LINQ. EntitySQL è invece utilissimo perchè è più database friendly (per cui è più facile da apprendere di linq to EF), rende semplice fare le query dinamiche e non ultimo permette di decidere se restituire oggetti o IDataReader e questa è la cosa più interessante :D.

Alk.
16/02/2009 19:21 | alkampfer
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET