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.
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- C# e Net 6 in Kubernetes con Prometheus e Grafana, il 12 gennaio 2022 alle 21:58
- Snaturare Kubernetes evitando i custom container Docker, il 6 gennaio 2022 alle 19:40
- Provando Kaniko in Kubernetes come alternativa a Docker per la creazione di immagini, il 18 dicembre 2021 alle 20:11
- Divertissement con l'OpenID e Access Token, il 6 dicembre 2021 alle 20:05
- Operator per Kubernetes in C# e Net Core 6., il 28 novembre 2021 alle 19:44
- RBAC in Kubernetes verso gli operator, il 21 novembre 2021 alle 20:52