ObjectStateManager Sınıf

Tanım

Varlık türü örnekleri ve ilişki örnekleri için nesne durumunu ve kimlik yönetimini korur.

public ref class ObjectStateManager
public class ObjectStateManager
type ObjectStateManager = class
Public Class ObjectStateManager
Devralma
ObjectStateManager

Örnekler

Aşağıdaki örnek öğesinden ObjectContext öğesini alır ObjectStateManager ve bağlam içindeki bir nesneye erişmek için durum yöneticisini kullanır.

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");
    }
}

Aşağıdaki örnek, bir nesneyi varlık anahtarına göre almak için döndürülen ObjectStateManager üzerindeki yöntemini kullanırTryGetObjectStateEntry(EntityKey, ObjectStateEntry).

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();
    }
}

Açıklamalar

ObjectStateManager sorgu sonuçlarını izler ve çakışan birden çok sorgu sonucunu birleştirmek için mantık sağlar. Ayrıca kullanıcı nesneleri eklediğinde, sildiğinde veya değiştirdiğinde bellek içi değişiklik izleme gerçekleştirir ve güncelleştirmeler için değişiklik kümesini sağlar. Bu değişiklik kümesi, değişiklik işlemcisi tarafından değişiklikleri kalıcı hale getirmek için kullanılır.

Bu sınıf genellikle tarafından ObjectContext kullanılır ve uygulamalarda doğrudan kullanılmaz.

Oluşturucular

ObjectStateManager(MetadataWorkspace)

ObjectStateManager sınıfının yeni bir örneğini başlatır.

Özellikler

MetadataWorkspace

Bu durum yöneticisiyle ilişkilendirileni MetadataWorkspace alır.

Yöntemler

ChangeObjectState(Object, EntityState)

Belirli bir nesnenin ObjectStateEntry durumunu belirtilen entityStateolarak değiştirir.

ChangeRelationshipState(Object, Object, String, EntityState)

İki ilgili nesneye ve gezinti özelliğinin adına göre belirtilen iki varlık nesnesi arasındaki ilişkinin durumunu değiştirir.

ChangeRelationshipState(Object, Object, String, String, EntityState)

İlişkili iki nesneye ve ilişkinin özelliklerine göre belirtilen iki varlık nesnesi arasındaki ilişkinin durumunu değiştirir.

ChangeRelationshipState<TEntity>(TEntity, Object, Expression<Func<TEntity,Object>>, EntityState)

İki ilgili nesne ve gezinti özelliğini tanımlayan bir LINQ ifadesi temelinde belirtilen iki varlık nesnesi arasındaki ilişkinin durumunu değiştirir.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetObjectStateEntries(EntityState)

Nesneler veya verilen durumla ilişkiler için bir nesne koleksiyonu ObjectStateEntry döndürür.

GetObjectStateEntry(EntityKey)

Belirtilen anahtarla nesne veya ilişki girişi için bir ObjectStateEntry döndürür.

GetObjectStateEntry(Object)

Belirtilen nesne için bir ObjectStateEntry döndürür.

GetRelationshipManager(Object)

RelationshipManager Belirtilen nesne tarafından kullanılan değerini döndürür.

GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)
TryGetObjectStateEntry(EntityKey, ObjectStateEntry)

Belirtilen EntityKeynesnesine veya ilişkisine karşılık gelen ObjectStateEntry öğesini almaya çalışır.

TryGetObjectStateEntry(Object, ObjectStateEntry)

Belirtilen Objectöğesine karşılık gelen ObjectStateEntry öğesini almaya çalışır.

TryGetRelationshipManager(Object, RelationshipManager)

RelationshipManager Belirtilen nesne tarafından kullanılan değerini döndürür.

Ekinlikler

ObjectStateManagerChanged

Varlıklar durum yöneticisine eklendiğinde veya durum yöneticisinden kaldırıldığında gerçekleşir.

Şunlara uygulanır