ObjectStateManager 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
엔터티 형식 인스턴스 및 관계 인스턴스에 대한 개체 상태 및 ID 관리를 유지 관리합니다.
public ref class ObjectStateManager
public class ObjectStateManager
type ObjectStateManager = class
Public Class ObjectStateManager
- 상속
-
ObjectStateManager
예제
다음 예제에서는 에서 를 ObjectStateManagerObjectContext 가져오고 상태 관리자를 사용하여 컨텍스트의 개체에 액세스합니다.
int orderId = 43680;
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
ObjectStateManager objectStateManager = context.ObjectStateManager;
ObjectStateEntry stateEntry = null;
var order = (from o in context.SalesOrderHeaders
where o.SalesOrderID == orderId
select o).First();
// Attempts to retrieve ObjectStateEntry for the given EntityKey.
bool isPresent = objectStateManager.TryGetObjectStateEntry(((IEntityWithKey)order).EntityKey, out stateEntry);
if (isPresent)
{
Console.WriteLine("The entity was found");
}
}
다음 예제에서는 반환 ObjectStateManager 된 의 TryGetObjectStateEntry(EntityKey, ObjectStateEntry) 메서드를 사용하여 엔터티 키를 기반으로 개체를 가져옵니다.
private static void ApplyItemUpdates(SalesOrderDetail originalItem,
SalesOrderDetail updatedItem)
{
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
context.SalesOrderDetails.Attach(updatedItem);
// Check if the ID is 0, if it is the item is new.
// In this case we need to chage the state to Added.
if (updatedItem.SalesOrderDetailID == 0)
{
// Because the ID is generated by the database we do not need to
// set updatedItem.SalesOrderDetailID.
context.ObjectStateManager.ChangeObjectState(updatedItem, System.Data.EntityState.Added);
}
else
{
// If the SalesOrderDetailID is not 0, then the item is not new
// and needs to be updated. Because we already added the
// updated object to the context we need to apply the original values.
// If we attached originalItem to the context
// we would need to apply the current values:
// context.ApplyCurrentValues("SalesOrderDetails", updatedItem);
// Applying current or original values, changes the state
// of the attached object to Modified.
context.ApplyOriginalValues("SalesOrderDetails", originalItem);
}
context.SaveChanges();
}
}
설명
ObjectStateManager 는 쿼리 결과를 추적하고 여러 겹치는 쿼리 결과를 병합하는 논리를 제공합니다. 또한 사용자가 개체를 삽입, 삭제 또는 수정하고 업데이트에 대한 변경 집합을 제공하는 경우 메모리 내 변경 내용 추적을 수행합니다. 이 변경 집합은 변경 프로세서에서 수정을 유지하는 데 사용됩니다.
이 클래스는 일반적으로 애플리케이션에서 직접 사용되지 않고 ObjectContext에서 사용됩니다.
생성자
ObjectStateManager(MetadataWorkspace) |
ObjectStateManager 클래스의 새 인스턴스를 초기화합니다. |
속성
MetadataWorkspace |
이 상태 관리자와 연결된 MetadataWorkspace를 가져옵니다. |
메서드
이벤트
ObjectStateManagerChanged |
상태 관리자에서 엔터티가 추가되거나 제거될 때 발생합니다. |
적용 대상
.NET