ObjectStateManager.GetObjectStateEntry Metodo

Definizione

Restituisce un oggetto ObjectStateEntry per una voce di oggetto o di relazione specifica.Returns an ObjectStateEntry for a specific object or relationship entry.

Overload

GetObjectStateEntry(EntityKey)

Restituisce un oggetto ObjectStateEntry per la voce di oggetto o di relazione con la chiave specificata.Returns an ObjectStateEntry for the object or relationship entry with the specified key.

GetObjectStateEntry(Object)

Restituisce un oggetto ObjectStateEntry per l'oggetto specificato.Returns an ObjectStateEntry for the specified object.

GetObjectStateEntry(EntityKey)

Restituisce un oggetto ObjectStateEntry per la voce di oggetto o di relazione con la chiave specificata.Returns an ObjectStateEntry for the object or relationship entry with the specified key.

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

Parametri

key
EntityKey

Oggetto EntityKey.The EntityKey.

Restituisce

Oggetto ObjectStateEntry corrispondente per l'oggetto EntityKey specificato.The corresponding ObjectStateEntry for the given EntityKey.

Eccezioni

Quando key è null.When key is null.

Quando il parametro key specificato non può essere trovato nel gestore degli stati.When the specified key cannot be found in the state manager.

Nell'oggetto EntityKey non è presente alcuna entità con l'oggetto ObjectStateManager specificato.No entity with the specified EntityKey exists in the ObjectStateManager.

Esempi

L'esempio in questo argomento è basato sul modello Sales di AdventureWorks.The example in this topic is based on the AdventureWorks Sales Model. Nell'esempio viene ottenuto l'oggetto ObjectStateEntry per l'oggetto EntityKey specificato dall'oggetto ObjectStateManager.The example gets the ObjectStateEntry for the given EntityKey from the ObjectStateManager. Viene quindi ottenuto il valore corrente della SalesOrderHeader.PurchaseOrderNumber proprietà, viene modificato il valore della proprietà e viene enumerata la raccolta di proprietà modificate.Then it gets the current value of the SalesOrderHeader.PurchaseOrderNumber property, changes the property's value, and enumerates through the collection of modified properties.

// 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());
    }
}
' Specify the order to update. 
Dim orderId As Integer = 43680

Using context As New AdventureWorksEntities()
    Try
        Dim 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)); 
        Dim detail = New SalesOrderDetail With
        {
            .SalesOrderID = 0,
            .SalesOrderDetailID = 0,
            .OrderQty = 2,
            .ProductID = 750,
            .SpecialOfferID = 1,
            .UnitPrice = CDec(2171.2942),
            .UnitPriceDiscount = 0,
            .LineTotal = 0,
            .rowguid = Guid.NewGuid(),
            .ModifiedDate = DateTime.Now
        }

        order.SalesOrderDetails.Add(detail)

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

        ' Save changes in the object context to the database. 
        Dim changes As Integer = 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. 
        For Each item As SalesOrderDetail In order.SalesOrderDetails
            Console.WriteLine("Item ID: {0}", item.SalesOrderDetailID.ToString())
            Console.WriteLine("Product: {0}", item.ProductID.ToString())
            Console.WriteLine("Quantity: {0}", item.OrderQty.ToString())
        Next
    Catch ex As UpdateException
        Console.WriteLine(ex.ToString())
    End Try
End Using

Commenti

Utilizzare il TryGetObjectStateEntry(EntityKey, ObjectStateEntry) metodo per restituire un ObjectStateEntry oggetto senza dovere GetObjectStateEntry(EntityKey) gestire l' InvalidOperationException eccezione generata dal metodo.Use the TryGetObjectStateEntry(EntityKey, ObjectStateEntry) method to return an ObjectStateEntry object without having to handle the InvalidOperationException raised by the GetObjectStateEntry(EntityKey) method.

GetObjectStateEntry(Object)

Restituisce un oggetto ObjectStateEntry per l'oggetto specificato.Returns an ObjectStateEntry for the specified object.

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

Parametri

entity
Object

Oggetto Object a cui appartiene l'oggetto ObjectStateEntry recuperato.The Object to which the retrieved ObjectStateEntry belongs.

Restituisce

Oggetto ObjectStateEntry corrispondente per l'oggetto Object specificato.The corresponding ObjectStateEntry for the given Object.

Eccezioni

Nell'oggetto Object non è presente alcuna entità per l'oggetto ObjectStateManager specificato.No entity for the specified Object exists in the ObjectStateManager.

Commenti

Utilizzare il TryGetObjectStateEntry(Object, ObjectStateEntry) metodo per restituire un ObjectStateEntry oggetto senza dovere GetObjectStateEntry(Object) gestire l' InvalidOperationException eccezione generata dal metodo.Use the TryGetObjectStateEntry(Object, ObjectStateEntry) method to return an ObjectStateEntry object without having to handle the InvalidOperationException raised by the GetObjectStateEntry(Object) method.

Si applica a