ObjectSet の使用 (Entity Framework)
.NET Framework Version 3.5 SP1 では、個々のモデルの ObjectContext クラスには通常、特定のエンティティ セットに関するクエリを表す ObjectQuery 型のプロパティ セットがあります。 さらに、ObjectContext には、オブジェクトの追加、削除、アタッチ、および更新を行うメソッドがあります。 通常、これらのメソッドは、オブジェクトと、エンティティ セット名を指定する文字列パラメーターを受け取ります。 .NET Framework バージョン 4 では、個々のモデルの ObjectContext クラスには、代わりに、モデルのエンティティ セットを表す ObjectSet 型のプロパティがあります。 CreateObjectSet メソッドとそのオーバーロードは、新しい ObjectSet インスタンスを作成します。 .NET Framework バージョン 4 では、ObjectSet オブジェクトに対してメソッドを使用して、作成、読み取り、削除、アタッチ、および更新操作を実行することをお勧めします。 ObjectSet は ObjectQuery から派生するので、クエリ オブジェクトとしても機能します。
.NET Framework バージョン 4 以降では、ObjectContext で定義された同等のメソッドの代わりに、ObjectSet で定義された次のメソッドを使用できます。
たとえば .NET Framework 4 では、次のコードを使用します。
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
// Add the new object to the context.
context.Products.AddObject(newProduct);
}
.NET Framework 3.5 SP1 では、次のコードを使用します。
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
// Add the new object to the context.
context.AddObject("Products", newProduct);
}
次の例では、型指定のない ObjectContext を使用して ObjectSet のインスタンスを作成する方法を示します。
' Create the ObjectContext.
Dim context As New ObjectContext("name=AdventureWorksEntities")
Dim query As ObjectSet(Of Product) = context.CreateObjectSet(Of Product)()
' Iterate through the collection of Products.
For Each result As Product In query
Console.WriteLine("Product Name: {0}", result.Name)
Next
// Create the ObjectContext.
ObjectContext context =
new ObjectContext("name=AdventureWorksEntities");
ObjectSet<Product> query = context.CreateObjectSet<Product>();
// Iterate through the collection of Products.
foreach (Product result in query)
Console.WriteLine("Product Name: {0}", result.Name);
ObjectSet クラスは、IObjectSet インターフェイスを実装します。 IObjectSet インターフェイスはシナリオのテストに役立つ場合があります。 データ ソースでクエリを実行しないでアプリケーションをテストする単体テストを作成するには、メモリでテスト データが自動入力されるテスト オブジェクトを使用できます。 IObjectSet を実装し、テスト データをデータ ソース外に保存できるテスト ObjectSet 型を定義できます。 また、テスト IObjectSet 型のプロパティを公開してエンティティ セットをテスト データで初期化するメソッドが含まれているテスト ObjectContext クラスも定義する必要があります。
.NET Framework バージョン 4 におけるテスト容易性の向上の例については、ADO.NET チームのブログおよび Julie Lerman のブログの投稿を参照してください。