Procedura: restituire un oggetto specifico utilizzando la relativa chiave (Entity Framework)
In questo argomento viene illustrato come recuperare un'entità dai relativi valori di chiave anziché creando ed eseguendo in modo esplicito una query di oggetto. Gli esempi inclusi in questo argomento sono basati sul Modello Sales di AdventureWorks. Per eseguire il codice incluso in questi esempi, è necessario avere già aggiunto il modello Sales di AdventureWorks al progetto e avere configurato il progetto per l'utilizzo di Entity Framework . A tale scopo, completare le procedure descritte in Procedura: configurare manualmente un progetto di Entity Framework e Procedura: definire manualmente i file di modello e di mapping (Entity Framework). È inoltre possibile utilizzare la procedura guidata Entity Data Model per definire il modello Sales di AdventureWorks. Per ulteriori informazioni, vedere Procedura: utilizzare la procedura guidata Entity Data Model (Entity Framework).
Esempio
In questo esempio viene utilizzato il metodo GetObjectByKey su ObjectContext per restituire un oggetto con l'oggetto EntityKey specificato nel contesto dell'oggetto. In questo esempio viene gestito l'oggetto ObjectNotFoundException che si verifica quando l'oggetto EntityKey fornito non corrisponde a un'entità esistente. Per evitare ObjectNotFoundException, chiamare TryGetObjectByKey, che restituisce false anziché generare un'eccezione.
Using context As New AdventureWorksEntities()
Try
' Define the entity key values.
Dim entityKeyValues As IEnumerable(Of KeyValuePair(Of String, Object)) = _
New KeyValuePair(Of String, Object)() {New KeyValuePair(Of String, Object)("SalesOrderID", 43680)}
' Create the key for a specific SalesOrderHeader object.
Dim key As New EntityKey("AdventureWorksEntities.SalesOrderHeaders", entityKeyValues)
' Get the object from the context or the persisted store by its key.
Dim order As SalesOrderHeader = DirectCast(context.GetObjectByKey(key), SalesOrderHeader)
Console.WriteLine("SalesOrderID: {0} Order Number: {1}", order.SalesOrderID, order.SalesOrderNumber)
Catch ex As ObjectNotFoundException
Console.WriteLine(ex.ToString())
End Try
End Using
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
try
{
// Define the entity key values.
IEnumerable<KeyValuePair<string, object>> entityKeyValues =
new KeyValuePair<string, object>[] {
new KeyValuePair<string, object>("SalesOrderID", 43680) };
// Create the key for a specific SalesOrderHeader object.
EntityKey key = new EntityKey("AdventureWorksEntities.SalesOrderHeaders", entityKeyValues);
// Get the object from the context or the persisted store by its key.
SalesOrderHeader order =
(SalesOrderHeader)context.GetObjectByKey(key);
Console.WriteLine("SalesOrderID: {0} Order Number: {1}",
order.SalesOrderID, order.SalesOrderNumber);
}
catch (ObjectNotFoundException ex)
{
Console.WriteLine(ex.ToString());
}
}
Vedere anche
Attività
Procedura: eseguire una query che restituisce oggetti di tipo entità (Entity Framework)
Procedura: utilizzare percorsi di query per influenzare i risultati (Entity Framework)
Concetti
Esecuzione di query su un modello concettuale (Entity Framework)