ObjectSet 사용(Entity Framework)
.NET Framework 버전 3.5 SP1에서 특정 모델에 대한 ObjectContext 클래스에는 일반적으로 특정 엔터티 집합에 대한 쿼리를 나타내는 ObjectQuery 형식의 속성 집합이 들어 있습니다. ObjectContext에는 개체를 추가하고, 삭제하고, 연결하고, 업데이트하는 메서드도 들어 있습니다. 이러한 메서드는 일반적으로 엔터티 집합 이름을 지정하는 문자열 매개 변수 및 개체를 사용합니다. .NET Framework 버전 4에서 특정 모델에 대한 ObjectContext 클래스에는 모델의 엔터티 집합을 나타내는 ObjectSet 형식의 속성이 대신 들어 있습니다. CreateObjectSet 메서드와 해당 오버로드는 새 ObjectSet 인스턴스를 만듭니다. .NET Framework 버전 4에서는 ObjectSet 개체의 메서드를 사용하여 만들기, 읽기, 삭제, 연결 및 업데이트 작업을 수행하는 것이 좋습니다. ObjectSet은 ObjectQuery에서 파생되므로 쿼리 개체로도 작동합니다.
.NET Framework 버전 4 이상에서는 ObjectSet에 정의된 다음 메서드를 ObjectContext에 정의된 이와 동등한 메서드 대신 사용할 수 있습니다.
예를 들어, .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 team blog 및 Julie Lerman's blog를 참조하십시오.