ObjectStateManager Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Поддерживает состояние объекта и управление удостоверениями для экземпляров типов сущностей и экземпляров связей.
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 . |
Методы
| Имя | Описание |
|---|---|
| ChangeObjectState(Object, EntityState) |
Изменяет состояние определенного ObjectStateEntry объекта на указанный |
| ChangeRelationshipState(Object, Object, String, EntityState) |
Изменяет состояние связи между двумя объектами сущности, заданными на основе двух связанных объектов и имени свойства навигации. |
| ChangeRelationshipState(Object, Object, String, String, EntityState) |
Изменяет состояние связи между двумя объектами сущности, заданными на основе двух связанных объектов и свойств связи. |
| ChangeRelationshipState<TEntity>(TEntity, Object, Expression<Func<TEntity,Object>>, EntityState) |
Изменяет состояние связи между двумя объектами сущности, заданными на основе двух связанных объектов и выражения LINQ, определяющего свойство навигации. |
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetObjectStateEntries(EntityState) |
Возвращает коллекцию ObjectStateEntry объектов для объектов или связей с заданным состоянием. |
| GetObjectStateEntry(EntityKey) |
ObjectStateEntry Возвращает объект или запись связи с указанным ключом. |
| GetObjectStateEntry(Object) |
ObjectStateEntry Возвращает объект для указанного объекта. |
| GetRelationshipManager(Object) |
Возвращает значение, используемое RelationshipManager указанным объектом. |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
| TryGetObjectStateEntry(EntityKey, ObjectStateEntry) |
Пытается получить соответствующий ObjectStateEntry объект или связь с указанным EntityKey. |
| TryGetObjectStateEntry(Object, ObjectStateEntry) |
Пытается получить соответствующее ObjectStateEntry значение для указанного Object. |
| TryGetRelationshipManager(Object, RelationshipManager) |
Возвращает значение, используемое RelationshipManager указанным объектом. |
События
| Имя | Описание |
|---|---|
| ObjectStateManagerChanged |
Происходит при добавлении или удалении сущностей из диспетчера состояний. |