Поделиться через


ObjectStateManager.GetObjectStateEntry Метод

Определение

Возвращает ObjectStateEntry для указанного объекта или записи связи.

Перегрузки

GetObjectStateEntry(EntityKey)

Возвращает запись ObjectStateEntry для объекта или запись связи с указанным ключом.

GetObjectStateEntry(Object)

Возвращает запись ObjectStateEntry для указанного объекта.

GetObjectStateEntry(EntityKey)

Возвращает запись ObjectStateEntry для объекта или запись связи с указанным ключом.

public:
 System::Data::Objects::ObjectStateEntry ^ GetObjectStateEntry(System::Data::EntityKey ^ key);
public System.Data.Objects.ObjectStateEntry GetObjectStateEntry (System.Data.EntityKey key);
member this.GetObjectStateEntry : System.Data.EntityKey -> System.Data.Objects.ObjectStateEntry
Public Function GetObjectStateEntry (key As EntityKey) As ObjectStateEntry

Параметры

Возвращаемое значение

Соответствующая запись ObjectStateEntry для заданного ключа EntityKey.

Исключения

Если значение параметра key равно null.

Когда указанный key не удается найти в диспетчере состояния.

Сущность с указанным ключом EntityKey отсутствует в диспетчере ObjectStateManager.

Примеры

В этом примере возвращается ObjectStateEntry для заданного EntityKey из ObjectStateManager. Затем он получает текущее SalesOrderHeader.PurchaseOrderNumber значение свойства, изменяет его значение и выполняет перечисление через коллекцию измененных свойств.

// Specify the order to update.
int orderId = 43680;

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    try
    {
        var order = (from o in context.SalesOrderHeaders
                     where o.SalesOrderID == orderId
                     select o).First();

        // Change the status of an existing order.
        order.Status = 1;

        // Delete the first item in the order.
        context.DeleteObject(order.SalesOrderDetails.First());

        // Create a new SalesOrderDetail object.
        // You can use the static CreateObjectName method (the Entity Framework
        // adds this method to the generated entity types) instead of the new operator:
        // SalesOrderDetail.CreateSalesOrderDetail(1, 0, 2, 750, 1, (decimal)2171.2942, 0, 0,
        //                                         Guid.NewGuid(), DateTime.Today));
        SalesOrderDetail detail = new SalesOrderDetail
        {
            SalesOrderID = 0,
            SalesOrderDetailID = 0,
            OrderQty = 2,
            ProductID = 750,
            SpecialOfferID = 1,
            UnitPrice = (decimal)2171.2942,
            UnitPriceDiscount = 0,
            LineTotal = 0,
            rowguid = Guid.NewGuid(),
            ModifiedDate = DateTime.Now
        };
        order.SalesOrderDetails.Add(detail);

        // Get the ObjectStateEntry for the order.
        ObjectStateEntry stateEntry =
            context.ObjectStateManager
            .GetObjectStateEntry(order);
        Console.WriteLine("State before SaveChanges() is called: {0}",
            stateEntry.State.ToString());

        // Save changes in the object context to the database.
        int changes = context.SaveChanges();

        Console.WriteLine("State after SaveChanges() is called: {0}",
            stateEntry.State.ToString());

        Console.WriteLine(changes.ToString() + " changes saved!");
        Console.WriteLine("Updated item for order ID: "
            + order.SalesOrderID.ToString());

        // Iterate through the collection of SalesOrderDetail items.
        foreach (SalesOrderDetail item in order.SalesOrderDetails)
        {
            Console.WriteLine("Item ID: "
                + item.SalesOrderDetailID.ToString() + "  Product: "
                + item.ProductID.ToString() + "  Quantity: "
                + item.OrderQty.ToString());
        }
    }
    catch (UpdateException ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

Комментарии

Используйте метод , TryGetObjectStateEntry(EntityKey, ObjectStateEntry) чтобы вернуть ObjectStateEntry объект без обработки , вызванного InvalidOperationException методом GetObjectStateEntry(EntityKey) .

Применяется к

GetObjectStateEntry(Object)

Возвращает запись ObjectStateEntry для указанного объекта.

public:
 System::Data::Objects::ObjectStateEntry ^ GetObjectStateEntry(System::Object ^ entity);
public System.Data.Objects.ObjectStateEntry GetObjectStateEntry (object entity);
member this.GetObjectStateEntry : obj -> System.Data.Objects.ObjectStateEntry
Public Function GetObjectStateEntry (entity As Object) As ObjectStateEntry

Параметры

entity
Object

Класс Object, которому принадлежит полученный объект ObjectStateEntry.

Возвращаемое значение

Соответствующая запись ObjectStateEntry для заданного ключа Object.

Исключения

Сущность для указанного ключа Object отсутствует в диспетчере ObjectStateManager.

Комментарии

Используйте метод , TryGetObjectStateEntry(Object, ObjectStateEntry) чтобы вернуть ObjectStateEntry объект без обработки , вызванного InvalidOperationException методом GetObjectStateEntry(Object) .

Применяется к