Как проверить, прикреплен ли объект к ObjectContext? - PullRequest
1 голос
/ 29 ноября 2011

Мне нужно прикрепить объект EF (ранее отсоединенный) к новому ObjectContext. Проблема в том, что я не знаю, был ли он прикреплен или загружен раньше. И если в ObjectContext загружен объект с тем же ключом, я получаю исключение при попытке присоединить. Есть ли способ проверить, есть ли уже объект с определенным ключом?

Спасибо!

1 Ответ

4 голосов
/ 29 ноября 2011

Состояние объектов в контексте объекта управляется ObjectStateManager .

из MSDN:

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

См. Также:http://msdn.microsoft.com/en-us/library/dd456854.aspx

из предыдущей ссылки MSDN:

// The changes are tracked as they occur and the state of the object is Modified.
Console.WriteLine(context.ObjectStateManager.GetObjectStateEntry(newItem).State);

.. Я полагаю, что в вашем случае это может быть один из кэшированных элементов.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...