Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo ObjectStateManager.TryGetObjectStateEntry (EntityKey, ObjectStateEntry)

 

Data di pubblicazione: ottobre 2016

Tenta di recuperare l'oggetto ObjectStateEntry corrispondente per l'oggetto o la relazione con l'oggetto EntityKey specificato.

Spazio dei nomi:   System.Data.Objects
Assembly:  System.Data.Entity (in System.Data.Entity.dll)

public bool TryGetObjectStateEntry(
	EntityKey key,
	out ObjectStateEntry entry
)

Parametri

key
Type: System.Data.EntityKey

Oggetto EntityKey specificato.

entry
Type: System.Data.Objects.ObjectStateEntry

Quando termina, questo metodo contiene un oggetto ObjectStateEntry per l'oggetto EntityKey specificato. Questo parametro viene passato senza inizializzazione.

Valore restituito

Type: System.Boolean

Valore Boolean che è true se è presente un oggetto ObjectStateEntry corrispondente per l'oggetto EntityKey specificato. In caso contrario, false.

Exception Condition
ArgumentNullException

Oggetto null (Nothing in Visual Basic) viene fornito per valore key.

Utilizzare il metodo TryGetObjectStateEntry(EntityKey, ObjectStateEntry) per restituire un oggetto ObjectStateEntry senza dovere gestire l'eccezione InvalidOperationException generata dal metodo GetObjectStateEntry(EntityKey).

Gli esempi in questo argomento sono basati sul modello Sales di AdventureWorks.

Nell'esempio viene tentato il recupero dell'oggetto ObjectStateEntry corrispondente per l'oggetto EntityKey specificato.

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

Nell'esempio seguente viene utilizzato il metodo TryGetObjectStateEntry(EntityKey, ObjectStateEntry) sull'oggetto ObjectStateManager restituito per ottenere un oggetto in base alla relativa chiave di entità.

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

.NET Framework
Disponibile da 3.5
Torna all'inizio
Mostra: