Entity Framework e il namespace EntityClient
di Andrea Zani, in .NET, sabato 16 agosto 2008 ore 16.01
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.
Nella stessa categoria
Triplet class non è un oggetto curioso, è utilissimo!!!
Entity Framework e stranezze(*)
Entity Framework. Una tabella due Entity senza discriminazioni
Entity Framework e più tabelle in una entity
L'Entity Framework e le custom class coinvolte nei where...
Entity Framework e l'ereditarietà (Single Table Inheritance)
I più letti del mese



















Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.