Antonio Esposito's


Prodotti tipici .NETtiani

EntityClient, ObjectQuery (EntityFramework)

Ciao a tutti

EntityFramework è una tecnologia nuova che offre una modellazione concettuale dei dati, una buona varietà di tecniche di accesso di accesso alle entità e il supporto a tutti i provider ADO.NET.

Entity Framework

EF è un'astrazione del modello dati di un DB. A differenza di un modello ORM (Object-Relational Mapping) ad esempio linq o anche un DataSet tipizzato, che genera per noi il codice di mappatura 1-1 tra una tabella sul db e una classe, EF invece usa un modello concettuale denominato EDM (Entity Data Model). In questo modello sarà possibile modellare ogni tipo di entità di business, anche se queste sono rappresentate su più tabelle fisiche, o anche se per farlo dovessimo usare delle VIEW in lettura e delle Stored Procedure in scrittura/modifica/eliminazione.
Per utilizzare EF fare click destro sul vostro progetto -> Add -> New Item -> ADO.NET Entity Data Model
Il wizard vi chiederà la connection string per collegarsi al database e poi vi chiederà da quale entità già presente sul db iniziare. Questo creerà delle classi di esempio 1-1 mappate al vs. db. Aprendo il file .edmx si potrà editare ogni entità, così come crearne altre e impostare eventualmente i metodi o le stored procedure da utilizzare per le operazioni CRUD (select, insert, update, delete).

ObjectQuery

ObjectQuery è una classe del namespace System.Data.Objects utilizzata da EF per rappresentare il nostro EDM:
var Context = new MyDBEntities();
ObjectQuery query1 = Context.Fatture; //con questa istruzione accediamo alla entità Fatture presente sul DB. Questa istruzione si comporta un po come LINQ, in pratica l'esecuzione è condizionata dall'enumerazione del risultato: finchè non si accede alla collection in modo diretto o con un foreach, il DB non verrà chiamato.
ObjectQuery query2 = Context.Fatture.OrderBy("it.Numero"); // it equivale al this (My in VB)
E' anche possibile specificare una query diretta in questo modo:
var query3 = New ObjectQuery("SELECT VALUE Fatture FROM MyDBEntities.Fatture AS Fatture",Context);
La sintassi è un po diversa da quella di T-SQL........ ;)

E' ovviamente utilizzabile il LINQtoEntities in modo molto semplice come LINQ ci ha abituato:
var query4 = from f in Context.Fatture select f;

EntityClient

System.Data.EntityClient è un namespace del .NET 3.5 con cui si può utilizzare il paradigma di programmazione ADO.NET connesso (DBConnection, DBCommand, DBDataReader) direttamente su delle entità EF. L'uso è molto semplice:

var cn = new EntityConnection("name=MyDBEntities"); //specificando il nome dell'entità impostata nel wizard. E' modificabile nel .edmx sotto la proprietà Entity Container Name
cn.Open();
var cm = new EntityCommand("SELECT VALUE Fatture FROM MyDBEntities.Fatture AS Fatture",cn);
var dr = cm.ExecuteReader();
while (dr.Read())
{
   Console.WriteLine(dr["numero"].ToString());
}
dr.Close();
cn.Close();

 

Categoria: Tips
lunedì, 18 gen 2010 Ore. 15.55
Statistiche
  • Views Home Page: 11.382
  • Views Posts: 59.990
  • Views Gallerie: 0
  • n° Posts: 44
  • n° Commenti: 16
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003