EF4 не может добавить объект в контекст, хотя я убежден, что он не подключен - PullRequest
0 голосов
/ 14 ноября 2011

Я не могу добавить объект в ObjectContext, хотя я убежден, что он не присоединен и не связан с другим контекстом

Я использую EF 4 с объектами POCO.

Если я попытаюсь

_currentContext.ObjectStateManager.GetObjectStateEntry(entityIn)

Тогда я получу ошибку

The ObjectStateManager does not contain an ObjectStateEntry with a reference to an object of type 'System.Data.Entity.DynamicProxies.OrderItem_7D361CB49D75AA90681B4BA3F924139ECB0FC1426E38E90C7B884A4E9CD777DF'.

Достаточно справедливо, что ее там нет.Поэтому, если я попытаюсь прикрепить его

_currentContext.AttachTo("OrderItems", entityIn)

, тогда я получу

An entity object cannot be referenced by multiple instances of IEntityChangeTracker.

Как я могу получить обе ошибки.Разве они не противоречат ??Как я могу прикрепить его к контексту?

Редактировать

В приложении есть только один контекст.Шаблон

  1. Все вызовы через объекты репозитория.
  2. Объекты получают свой objectcontext из фабричного класса.
  3. Этот фабричный класс либо создает контекст, либо получает контекст из объекта запроса, таким образом гарантируя, что для жизненного цикла страницы используется только один контекст

В любой момент, если вы берете два экземпляраобъект контекста хеш-код для каждого из них одинаков.

1 Ответ

2 голосов
/ 14 ноября 2011

Объект, entityIn, вероятно, имеет ссылку на объект, который находится в другом контексте.

Однако, проблема real в том, что у вас есть несколько контекстов в области действия . Это трудно , чтобы сделать это правильно. В веб-приложении у вас должен быть один контекст на запрос, точка.

...