Как я могу обнаружить, если объект уже подключен с использованием заглушек - PullRequest
1 голос
/ 27 октября 2009

Я хочу использовать заглушки, но, кажется, я не могу использовать TryGetObjectStateEntry без полной сущности? Есть ли способ сделать это с объектами-заглушками или каким-либо другим способом обнаружить, если объект уже подключен? AttachTo сгенерирует исключение InvalidOperationException, если я попытаюсь присоединить один и тот же объект дважды. Я пытаюсь сохранить попадание в базу данных. Вот мой код;

    // Stub entities don't work with TryGetObjectStateEntry, need a full entity?
    // product = new Product { ProductID = item.ProductID };
    // Full entity from the DB works fine
    product = ctx.Products.First(i => i.ProductID == item.ProductID);
    ObjectStateEntry entry = null;
    if(!ctx.ObjectStateManager.TryGetObjectStateEntry(product.EntityKey, out entry))
    {
         ctx.AttachTo("Products", product);
    }
    newItem.Product = product;   

1 Ответ

2 голосов
/ 27 октября 2009

Просто установите EntityKey ссылки вместо использования заглушек. Это всегда работает, если вам не нужно разыменовывать связанные значения. Так как вы используете заглушки, я думаю, вы этого не сделаете.

newItem.ProductReference.EntityKey = 
    new EntityKey("MyEntityContextName.Products", "ProductID", item.ProductID);

Очевидно, замените «MyEntityContextName» фактическим именем вашего контекста.

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