ObjectStateManager 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
维护实体类型实例和关系实例的对象状态和标识管理。
public ref class ObjectStateManager
public class ObjectStateManager
type ObjectStateManager = class
Public Class ObjectStateManager
- 继承
-
ObjectStateManager
示例
下面的示例从 ObjectStateManager 获取 ObjectContext,并使用状态管理器访问上下文中的对象。
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");
}
}
下面的示例使用返回的 TryGetObjectStateEntry(EntityKey, ObjectStateEntry) 的 ObjectStateManager 方法,根据对象的实体键获取对象。
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 |
在从状态管理器中添加或移除实体时发生。 |