ObjectStateManager Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Obsługuje zarządzanie stanem obiektów i tożsamościami dla wystąpień typu jednostki i wystąpień relacji.
public ref class ObjectStateManager
public class ObjectStateManager
type ObjectStateManager = class
Public Class ObjectStateManager
- Dziedziczenie
-
ObjectStateManager
Przykłady
Poniższy przykład pobiera element ObjectStateManager z obiektu ObjectContext i używa menedżera stanu w celu uzyskania dostępu do obiektu w kontekście.
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");
}
}
W poniższym przykładzie użyto ObjectStateManager metody zwróconej w TryGetObjectStateEntry(EntityKey, ObjectStateEntry) celu pobrania obiektu na podstawie klucza jednostki.
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();
}
}
Uwagi
ObjectStateManager śledzi wyniki zapytań i zapewnia logikę scalania wielu nakładających się wyników zapytania. Wykonuje również śledzenie zmian w pamięci, gdy użytkownik wstawia, usuwa lub modyfikuje obiekty i udostępnia zestaw zmian dla aktualizacji. Ten zestaw zmian jest używany przez procesor zmian w celu utrwalania modyfikacji.
Ta klasa jest zwykle używana przez ObjectContext aplikacje i nie bezpośrednio w aplikacjach.
Konstruktory
ObjectStateManager(MetadataWorkspace) |
Inicjuje nowe wystąpienie klasy ObjectStateManager. |
Właściwości
MetadataWorkspace |
MetadataWorkspace Pobiera skojarzony z tym menedżerem stanu. |
Metody
ChangeObjectState(Object, EntityState) |
Zmienia stan ObjectStateEntry określonego obiektu dla określonego |
ChangeRelationshipState(Object, Object, String, EntityState) |
Zmienia stan relacji między dwoma obiektami jednostki określonymi na podstawie dwóch powiązanych obiektów i nazwy właściwości nawigacji. |
ChangeRelationshipState(Object, Object, String, String, EntityState) |
Zmienia stan relacji między dwoma obiektami jednostki określonymi na podstawie dwóch powiązanych obiektów i właściwości relacji. |
ChangeRelationshipState<TEntity>(TEntity, Object, Expression<Func<TEntity,Object>>, EntityState) |
Zmienia stan relacji między dwoma obiektami jednostki określonymi na podstawie dwóch powiązanych obiektów i wyrażenia LINQ definiującego właściwość nawigacji. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetObjectStateEntries(EntityState) |
Zwraca kolekcję ObjectStateEntry obiektów dla obiektów lub relacji z danym stanem. |
GetObjectStateEntry(EntityKey) |
Zwraca element ObjectStateEntry dla obiektu lub wpisu relacji z określonym kluczem. |
GetObjectStateEntry(Object) |
Zwraca obiekt ObjectStateEntry dla określonego obiektu. |
GetRelationshipManager(Object) |
Zwraca wartość RelationshipManager używaną przez określony obiekt. |
GetType() |
Type Pobiera bieżące wystąpienie. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
TryGetObjectStateEntry(EntityKey, ObjectStateEntry) |
Próbuje pobrać odpowiedni ObjectStateEntry obiekt lub relację z określonym EntityKeyelementem . |
TryGetObjectStateEntry(Object, ObjectStateEntry) |
Próbuje pobrać odpowiedni element ObjectStateEntry dla określonego Objectelementu . |
TryGetRelationshipManager(Object, RelationshipManager) |
Zwraca wartość RelationshipManager używaną przez określony obiekt. |
Zdarzenia
ObjectStateManagerChanged |
Występuje, gdy jednostki są dodawane do lub usuwane z menedżera stanu. |