ObjectStateManager Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Onderhoudt objectstatus en identiteitsbeheer voor instanties van entiteitstypen en relatie-exemplaren.
public ref class ObjectStateManager
public class ObjectStateManager
type ObjectStateManager = class
Public Class ObjectStateManager
- Overname
-
ObjectStateManager
Voorbeelden
In het volgende voorbeeld wordt de ObjectStateManager statusbeheerder opgehaald en ObjectContext gebruikt om toegang te krijgen tot een object in de context.
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");
}
}
In het volgende voorbeeld wordt de TryGetObjectStateEntry(EntityKey, ObjectStateEntry) methode voor het geretourneerde object gebruikt ObjectStateManager om een object op te halen op basis van de entiteitssleutel.
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();
}
}
Opmerkingen
ObjectStateManager houdt queryresultaten bij en biedt logica voor het samenvoegen van meerdere overlappende queryresultaten. Het voert ook het bijhouden van wijzigingen in het geheugen uit wanneer een gebruiker objecten invoegt, verwijdert of wijzigt en de wijzigingenset biedt voor updates. Deze wijzigingsset wordt door de wijzigingsprocessor gebruikt om wijzigingen te behouden.
Deze klasse wordt doorgaans gebruikt door ObjectContext en niet rechtstreeks in toepassingen.
Constructors
| Name | Description |
|---|---|
| ObjectStateManager(MetadataWorkspace) |
Initialiseert een nieuw exemplaar van de ObjectStateManager klasse. |
Eigenschappen
| Name | Description |
|---|---|
| MetadataWorkspace |
Hiermee haalt u de MetadataWorkspace gekoppelde statusmanager op. |
Methoden
| Name | Description |
|---|---|
| ChangeObjectState(Object, EntityState) |
Wijzigt de status van het ObjectStateEntry voor een specifiek object in de opgegeven |
| ChangeRelationshipState(Object, Object, String, EntityState) |
Hiermee wijzigt u de status van de relatie tussen twee entiteitsobjecten die zijn opgegeven op basis van de twee gerelateerde objecten en de naam van de navigatie-eigenschap. |
| ChangeRelationshipState(Object, Object, String, String, EntityState) |
Hiermee wijzigt u de status van de relatie tussen twee entiteitsobjecten die zijn opgegeven op basis van de twee gerelateerde objecten en de eigenschappen van de relatie. |
| ChangeRelationshipState<TEntity>(TEntity, Object, Expression<Func<TEntity,Object>>, EntityState) |
Hiermee wijzigt u de status van de relatie tussen twee entiteitsobjecten die zijn opgegeven op basis van de twee gerelateerde objecten en een LINQ-expressie die de navigatie-eigenschap definieert. |
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetObjectStateEntries(EntityState) |
Retourneert een verzameling ObjectStateEntry objecten voor objecten of relaties met de opgegeven status. |
| GetObjectStateEntry(EntityKey) |
Retourneert een ObjectStateEntry voor het object of de relatievermelding met de opgegeven sleutel. |
| GetObjectStateEntry(Object) |
Retourneert een ObjectStateEntry voor het opgegeven object. |
| GetRelationshipManager(Object) |
Retourneert de RelationshipManager waarde die wordt gebruikt door het opgegeven object. |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |
| TryGetObjectStateEntry(EntityKey, ObjectStateEntry) |
Hiermee wordt geprobeerd het bijbehorende ObjectStateEntry voor het object of de relatie met het opgegeven EntityKeyobject op te halen. |
| TryGetObjectStateEntry(Object, ObjectStateEntry) |
Probeert de corresponderende ObjectStateEntry voor de opgegeven Objectop te halen. |
| TryGetRelationshipManager(Object, RelationshipManager) |
Retourneert de RelationshipManager waarde die wordt gebruikt door het opgegeven object. |
gebeurtenis
| Name | Description |
|---|---|
| ObjectStateManagerChanged |
Treedt op wanneer entiteiten worden toegevoegd aan of verwijderd uit de statusbeheerder. |