Share via


ObjectStateManager Kelas

Definisi

Mempertahankan status objek dan manajemen identitas untuk instans jenis entitas dan instans hubungan.

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

Contoh

Contoh berikut mendapatkan ObjectStateManager dari ObjectContext dan menggunakan pengelola status untuk mengakses objek dalam konteks.

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

Contoh berikut menggunakan TryGetObjectStateEntry(EntityKey, ObjectStateEntry) metode pada yang dikembalikan ObjectStateManager untuk mendapatkan objek berdasarkan kunci entitasnya.

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

Keterangan

ObjectStateManager melacak hasil kueri, dan menyediakan logika untuk menggabungkan beberapa hasil kueri yang tumpang tindih. Ini juga melakukan pelacakan perubahan dalam memori saat pengguna menyisipkan, menghapus, atau memodifikasi objek, dan menyediakan set perubahan untuk pembaruan. Set perubahan ini digunakan oleh prosesor perubahan untuk mempertahankan modifikasi.

Kelas ini biasanya digunakan oleh ObjectContext dan tidak langsung dalam aplikasi.

Konstruktor

ObjectStateManager(MetadataWorkspace)

Menginisialisasi instans baru kelas ObjectStateManager.

Properti

MetadataWorkspace

Mendapatkan yang MetadataWorkspace terkait dengan manajer status ini.

Metode

ChangeObjectState(Object, EntityState)

Mengubah status ObjectStateEntry untuk objek tertentu ke yang ditentukan entityState.

ChangeRelationshipState(Object, Object, String, EntityState)

Mengubah status hubungan antara dua objek entitas yang ditentukan berdasarkan dua objek terkait dan nama properti navigasi.

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

Mengubah status hubungan antara dua objek entitas yang ditentukan berdasarkan dua objek terkait dan properti hubungan.

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

Mengubah status hubungan antara dua objek entitas yang ditentukan berdasarkan dua objek terkait dan ekspresi LINQ yang menentukan properti navigasi.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetObjectStateEntries(EntityState)

Mengembalikan kumpulan ObjectStateEntry objek untuk objek atau hubungan dengan status yang diberikan.

GetObjectStateEntry(EntityKey)

Mengembalikan ObjectStateEntry untuk objek atau entri hubungan dengan kunci yang ditentukan.

GetObjectStateEntry(Object)

Mengembalikan ObjectStateEntry untuk objek yang ditentukan.

GetRelationshipManager(Object)

Mengembalikan RelationshipManager yang digunakan oleh objek yang ditentukan.

GetType()

Mendapatkan instans Type saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari yang saat ini Object.

(Diperoleh dari Object)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)
TryGetObjectStateEntry(EntityKey, ObjectStateEntry)

Mencoba mengambil yang sesuai ObjectStateEntry untuk objek atau hubungan dengan yang ditentukan EntityKey.

TryGetObjectStateEntry(Object, ObjectStateEntry)

Mencoba mengambil yang ObjectStateEntry sesuai untuk yang ditentukan Object.

TryGetRelationshipManager(Object, RelationshipManager)

Mengembalikan RelationshipManager yang digunakan oleh objek yang ditentukan.

Acara

ObjectStateManagerChanged

Terjadi ketika entitas ditambahkan ke atau dihapus dari manajer status.

Berlaku untuk