Entity Framework e il namespace EntityClient

di Andrea Zani, in .NET,

Sabato pomeriggio. L'entity framework permette, grazie alle classi contenuti nel namespace EntityClient, la connessione e l'esecuzione di query direttamente sulle entity, come se si trattasse di un database. Riferendomi sempre a grandi linee agli esempi esposti qui e qui, ecco un banale esempio di utilizzo delle classi di questo namespace:

using (System.Data.EntityClient.EntityConnection conn = new System.Data.EntityClient.EntityConnection("name=TestEntitiesCode"))
{
conn.Open();

System.Data.EntityClient.EntityCommand comm= conn.CreateCommand();
comm.CommandText = "select na.Id, na.Names1, na.Books from TestEntitiesCode.Names as na";
System.Data.EntityClient.EntityDataReader re = comm.ExecuteReader(System.Data.CommandBehavior.SequentialAccess);
while (re.Read())
{
Response.Write(string.Format("{0}, {1} = ",
re["Id"], re["Names1"]));
ShowChildren(re["Books"] as System.Data.Common.DbDataReader);
Response.Write("<br />");
}
re.Close();
}

private void ShowChildren(System.Data.Common.DbDataReader children)
{
while (children.Read())
{
Response.Write("[[");
System.Data.IExtendedDataRecord columns = children as System.Data.IExtendedDataRecord;
for (int i = 0; i < columns.FieldCount; i++)
Response.Write(columns[i].ToString() + ", ");
Response.Write("]]");
}
}

Due parole sulla sintassi. In EntityConnection dobbiamo specificare il nome della classe del nostro model creato con VS2008 (nel dettaglio, aperto il model in VS2008 è sufficiente leggere la proprietà "Entity Container" nelle properties. Nell'esempio viene usata il datareader. Per le proprietà dirette come l'id e il name dell'entità Names, possiamo accedere direttamente con il nome stesso, ma in caso volessimo accedere, come nell'esempio, a una collection di entity come la lista dalla tabella Books, dobbiamo complicare un po' le cose. L'oggetto presente in re["Books"] è System.Data.Query.ResultAssembly.BridgeDataReader ma possiamo passarlo come un DbDataReader come nell'esempio.

In ShowChildren possiamo anche andare oltre, leggendo il tipo per ogni column e agire di conseguenza. Ma non ho approfondito oltre ed è sabato anche per me. Comunque, il risultato del codice è il seguente:

1, Andrea = [[1, Book 1, ]]
2, Andrea2 = [[2, Book 2, ]][[3, Book 3, ]]
3, Andrea3 = [[4, Book 2, ]][[5, Book 3, ]]

Andando a vedere con il Profiler se ci fossero ancora sorprese, troviamo la query già spiegata precedentemente.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese