ObjectStateManager Klasa
Definicja
Ważny
Niektóre informacje dotyczą produktów przedpremierowych, które mogą zostać znacznie zmodyfikowane przed premierą. Microsoft nie udziela żadnych gwarancji, ani wyraźnych, ani domniemanych, dotyczących informacji podanych tutaj.
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.
Konstruktorów
| Nazwa | Opis |
|---|---|
| ObjectStateManager(MetadataWorkspace) |
Inicjuje nowe wystąpienie klasy ObjectStateManager. |
Właściwości
| Nazwa | Opis |
|---|---|
| MetadataWorkspace |
MetadataWorkspace Pobiera skojarzony z tym menedżerem stanu. |
Metody
| Nazwa | Opis |
|---|---|
| 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. (Dziedziczone od Object) |
| GetHashCode() |
Służy jako domyślna funkcja skrótu. (Dziedziczone od 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. (Dziedziczone od Object) |
| MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Dziedziczone od Object) |
| ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Dziedziczone od 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
| Nazwa | Opis |
|---|---|
| ObjectStateManagerChanged |
Występuje, gdy jednostki są dodawane do lub usuwane z menedżera stanu. |