ObjectStateManager Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Verwaltet den Objektstatus und die Identitätsverwaltung für Entitätstypinstanzen und Beziehungsinstanzen.
public ref class ObjectStateManager
public class ObjectStateManager
type ObjectStateManager = class
Public Class ObjectStateManager
- Vererbung
-
ObjectStateManager
Beispiele
Im folgenden Beispiel wird der ObjectStateManager Status-Manager abgerufen ObjectContext und verwendet, um im Kontext auf ein Objekt zuzugreifen.
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");
}
}
Im folgenden Beispiel wird die TryGetObjectStateEntry(EntityKey, ObjectStateEntry) Methode für die zurückgegebene ObjectStateManager Methode verwendet, um ein Objekt basierend auf seinem Entitätsschlüssel abzurufen.
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();
}
}
Hinweise
ObjectStateManager Verfolgt Abfrageergebnisse und stellt Logik zum Zusammenführen mehrerer überlappender Abfrageergebnisse bereit. Sie führt auch die Nachverfolgung von Änderungen im Arbeitsspeicher durch, wenn ein Benutzer Objekte einfügt, löscht oder ändert und den Änderungssatz für Aktualisierungen bereitstellt. Dieser Änderungssatz wird vom Änderungsprozessor verwendet, um Änderungen beizubehalten.
Diese Klasse wird in der Regel von ObjectContext Anwendungen verwendet und nicht direkt.
Konstruktoren
| Name | Beschreibung |
|---|---|
| ObjectStateManager(MetadataWorkspace) |
Initialisiert eine neue Instanz der ObjectStateManager-Klasse. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| MetadataWorkspace |
Ruft den MetadataWorkspace diesem Status-Manager zugeordneten ab. |
Methoden
| Name | Beschreibung |
|---|---|
| ChangeObjectState(Object, EntityState) |
Ändert den ObjectStateEntry Status des für ein bestimmtes Objekt in das angegebene |
| ChangeRelationshipState(Object, Object, String, EntityState) |
Ändert den Status der Beziehung zwischen zwei Entitätsobjekten, die basierend auf den beiden verwandten Objekten und dem Namen der Navigationseigenschaft angegeben werden. |
| ChangeRelationshipState(Object, Object, String, String, EntityState) |
Ändert den Status der Beziehung zwischen zwei Entitätsobjekten, die basierend auf den beiden verknüpften Objekten und den Eigenschaften der Beziehung angegeben werden. |
| ChangeRelationshipState<TEntity>(TEntity, Object, Expression<Func<TEntity,Object>>, EntityState) |
Ändert den Status der Beziehung zwischen zwei Entitätsobjekten, die basierend auf den beiden verwandten Objekten angegeben werden, und einem LINQ-Ausdruck, der die Navigationseigenschaft definiert. |
| Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetObjectStateEntries(EntityState) |
Gibt eine Auflistung von ObjectStateEntry Objekten für Objekte oder Beziehungen mit dem angegebenen Zustand zurück. |
| GetObjectStateEntry(EntityKey) |
Gibt einen ObjectStateEntry Wert für den Objekt- oder Beziehungseintrag mit dem angegebenen Schlüssel zurück. |
| GetObjectStateEntry(Object) |
Gibt einen ObjectStateEntry Wert für das angegebene Objekt zurück. |
| GetRelationshipManager(Object) |
Gibt das RelationshipManager vom angegebenen Objekt verwendete Objekt zurück. |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
| TryGetObjectStateEntry(EntityKey, ObjectStateEntry) |
Versucht, das entsprechende ObjectStateEntry Objekt oder die beziehungsweise die angegebene EntityKeyBeziehung abzurufen. |
| TryGetObjectStateEntry(Object, ObjectStateEntry) |
Versucht, das entsprechende ObjectStateEntry für die angegebene Object. |
| TryGetRelationshipManager(Object, RelationshipManager) |
Gibt das RelationshipManager vom angegebenen Objekt verwendete Objekt zurück. |
Ereignisse
| Name | Beschreibung |
|---|---|
| ObjectStateManagerChanged |
Tritt auf, wenn Entitäten dem Status-Manager hinzugefügt oder daraus entfernt werden. |