ObjectStateManager Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Underhåller objekttillstånd och identitetshantering för entitetstypsinstanser och relationsinstanser.
public ref class ObjectStateManager
public class ObjectStateManager
type ObjectStateManager = class
Public Class ObjectStateManager
- Arv
-
ObjectStateManager
Exempel
Följande exempel hämtar ObjectStateManager från ObjectContext och använder tillståndshanteraren för att komma åt ett objekt i kontexten.
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");
}
}
I följande exempel används TryGetObjectStateEntry(EntityKey, ObjectStateEntry) metoden på den returnerade ObjectStateManager för att hämta ett objekt baserat på dess entitetsnyckel.
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();
}
}
Kommentarer
ObjectStateManager spårar frågeresultat och tillhandahåller logik för att sammanfoga flera överlappande frågeresultat. Den utför även spårning av minnesintern ändring när en användare infogar, tar bort eller ändrar objekt och tillhandahåller ändringsuppsättningen för uppdateringar. Den här ändringsuppsättningen används av ändringsprocessorn för att bevara ändringar.
Den här klassen används vanligtvis av ObjectContext och inte direkt i program.
Konstruktorer
| Name | Description |
|---|---|
| ObjectStateManager(MetadataWorkspace) |
Initierar en ny instans av ObjectStateManager klassen. |
Egenskaper
| Name | Description |
|---|---|
| MetadataWorkspace |
Hämtar den MetadataWorkspace associerade med den här tillståndshanteraren. |
Metoder
| Name | Description |
|---|---|
| ChangeObjectState(Object, EntityState) |
Ändrar tillståndet ObjectStateEntry för för ett specifikt objekt till den angivna |
| ChangeRelationshipState(Object, Object, String, EntityState) |
Ändrar tillståndet för relationen mellan två entitetsobjekt som anges baserat på de två relaterade objekten och namnet på navigeringsegenskapen. |
| ChangeRelationshipState(Object, Object, String, String, EntityState) |
Ändrar tillståndet för relationen mellan två entitetsobjekt som anges baserat på de två relaterade objekten och egenskaperna för relationen. |
| ChangeRelationshipState<TEntity>(TEntity, Object, Expression<Func<TEntity,Object>>, EntityState) |
Ändrar tillståndet för relationen mellan två entitetsobjekt som anges baserat på de två relaterade objekten och ett LINQ-uttryck som definierar navigeringsegenskapen. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetObjectStateEntries(EntityState) |
Returnerar en samling ObjectStateEntry objekt för objekt eller relationer med det angivna tillståndet. |
| GetObjectStateEntry(EntityKey) |
Returnerar en ObjectStateEntry för objektet eller relationsposten med den angivna nyckeln. |
| GetObjectStateEntry(Object) |
Returnerar ett ObjectStateEntry för det angivna objektet. |
| GetRelationshipManager(Object) |
RelationshipManager Returnerar det som används av det angivna objektet. |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |
| TryGetObjectStateEntry(EntityKey, ObjectStateEntry) |
Försöker hämta motsvarande ObjectStateEntry för objektet eller relationen med den angivna EntityKey. |
| TryGetObjectStateEntry(Object, ObjectStateEntry) |
Försöker hämta motsvarande ObjectStateEntry för den angivna Object. |
| TryGetRelationshipManager(Object, RelationshipManager) |
RelationshipManager Returnerar det som används av det angivna objektet. |
Händelser
| Name | Description |
|---|---|
| ObjectStateManagerChanged |
Inträffar när entiteter läggs till eller tas bort från tillståndshanteraren. |