キーを使用して特定のオブジェクトを返す方法 (Entity Framework)
このトピックでは、オブジェクト クエリを明示的に作成して実行する代わりに、エンティティをそのキー値で取得する方法について説明します。このトピックの例には、AdventureWorks Sales Model (EDM) が使用されています。これらの例のコードを実行するには、あらかじめプロジェクトに AdventureWorks Sales Model を追加し、エンティティ フレームワーク が使用されるようにプロジェクトを構成しておく必要があります。具体的な方法については、「Entity Framework プロジェクトを手動で構成する方法」と「Entity Data Model を手動で定義する方法 (Entity Framework)」の手順を参照してください。Entity Data Model ウィザードを使用して、AdventureWorks Sales Model を定義することもできます。詳細については、「Entity Data Model ウィザードを使用する方法 (Entity Framework)」を参照してください。
例
この例では、ObjectContext の GetObjectByKey メソッドを使用し、オブジェクト コンテキストに対して EntityKey を指定することによって、対応するオブジェクトを取得します。指定した EntityKey に対応する既存のエンティティが見つからなかった場合、ObjectNotFoundException が発生します。この例には、そのための例外処理も記述されています。ObjectNotFoundException を防ぐには、TryGetObjectByKey を呼び出します。この場合、例外は生成されずに、false が返されます。
Using advWorksContext 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.SalesOrderHeader", entityKeyValues)
Dim order As SalesOrderHeader = _
CType(advWorksContext.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 advWorksContext =
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.SalesOrderHeader", entityKeyValues);
// Get the object from the context or the persisted store by its key.
SalesOrderHeader order =
(SalesOrderHeader)advWorksContext.GetObjectByKey(key);
Console.WriteLine("SalesOrderID: {0} Order Number: {1}",
order.SalesOrderID, order.SalesOrderNumber);
}
catch (ObjectNotFoundException ex)
{
Console.WriteLine(ex.ToString());
}
}
参照
処理手順
エンティティ型を返すクエリの実行方法 (Entity Framework)
クエリ パスを使用して結果を構築する方法 (Entity Framework)
概念
オブジェクトとしてのデータのクエリ (Entity Framework)