ObjectStateManager Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Az entitástípus-példányok és kapcsolatpéldányok objektumállapot- és identitáskezelését tartja karban.
public ref class ObjectStateManager
public class ObjectStateManager
type ObjectStateManager = class
Public Class ObjectStateManager
- Öröklődés
-
ObjectStateManager
Példák
Az alábbi példa beolvas egy ObjectStateManager objektumot a ObjectContext környezetből, és az állapotkezelő használatával éri el az objektumot a környezetben.
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");
}
}
Az alábbi példa a TryGetObjectStateEntry(EntityKey, ObjectStateEntry) visszaadott ObjectStateManager metódust használja egy objektum lekéréséhez az entitáskulcsa alapján.
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();
}
}
Megjegyzések
ObjectStateManager nyomon követi a lekérdezési eredményeket, és logikát biztosít több egymást átfedő lekérdezési eredmény egyesítéséhez. Emellett a memórián belüli változáskövetést is végrehajtja, amikor egy felhasználó beszúr, töröl vagy módosít objektumokat, és megadja a módosításkészletet a frissítésekhez. Ezt a módosításkészletet a módosításfeldolgozó használja a módosítások megőrzéséhez.
Ezt az osztályt általában az alkalmazások használják ObjectContext , és nem közvetlenül az alkalmazásokban.
Konstruktorok
| Name | Description |
|---|---|
| ObjectStateManager(MetadataWorkspace) |
Inicializálja a ObjectStateManager osztály új példányát. |
Tulajdonságok
| Name | Description |
|---|---|
| MetadataWorkspace |
Lekéri a MetadataWorkspace társított állapotkezelőt. |
Metódusok
| Name | Description |
|---|---|
| ChangeObjectState(Object, EntityState) |
Egy adott objektum állapotának ObjectStateEntry módosítása a megadottra |
| ChangeRelationshipState(Object, Object, String, EntityState) |
A két kapcsolódó objektum és a navigációs tulajdonság neve alapján megadott két entitásobjektum közötti kapcsolat állapotát módosítja. |
| ChangeRelationshipState(Object, Object, String, String, EntityState) |
A két kapcsolódó objektum és a kapcsolat tulajdonságai alapján megadott két entitásobjektum közötti kapcsolat állapotát módosítja. |
| ChangeRelationshipState<TEntity>(TEntity, Object, Expression<Func<TEntity,Object>>, EntityState) |
A két kapcsolódó objektum és a navigációs tulajdonságot meghatározó LINQ-kifejezés alapján megadott két entitásobjektum közötti kapcsolat állapotát módosítja. |
| Equals(Object) |
Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal. (Öröklődés forrása Object) |
| GetHashCode() |
Ez az alapértelmezett kivonatoló függvény. (Öröklődés forrása Object) |
| GetObjectStateEntries(EntityState) |
Objektumgyűjteményt ObjectStateEntry ad vissza az adott állapotú objektumokhoz vagy kapcsolatokhoz. |
| GetObjectStateEntry(EntityKey) |
A megadott kulccsal visszaadott ObjectStateEntry objektum- vagy kapcsolatbejegyzést adja vissza. |
| GetObjectStateEntry(Object) |
A megadott objektumhoz ad vissza egy ObjectStateEntry értéket. |
| GetRelationshipManager(Object) |
RelationshipManager A megadott objektum által használt értéket adja vissza. |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |
| TryGetObjectStateEntry(EntityKey, ObjectStateEntry) |
Megpróbálja lekérni a megadott ObjectStateEntryobjektumnak vagy kapcsolatnak megfelelőtEntityKey. |
| TryGetObjectStateEntry(Object, ObjectStateEntry) |
Megpróbálja lekérni a megadotthoz ObjectStateEntrytartozótObject. |
| TryGetRelationshipManager(Object, RelationshipManager) |
RelationshipManager A megadott objektum által használt értéket adja vissza. |
esemény
| Name | Description |
|---|---|
| ObjectStateManagerChanged |
Akkor fordul elő, ha az entitásokat hozzáadják vagy eltávolítják az állapotkezelőből. |