EF DbContext в службах WCF - PullRequest
       3

EF DbContext в службах WCF

1 голос
/ 11 октября 2011

Я создаю приложение, которое использует EF в качестве своей формы доступа к данным.

Мои сущности теряют свое состояние, в результате чего всякий раз, когда я сохраняю новую сущность, любые объекты в отношениях помечаются как новые и также пытаются вставляться.

Как мне создать экземпляр моего DbContext один раз для каждого вызова WCF, чтобы я использовал один и тот же контекст во всем вызове службы, чтобы он не был удален и позволил моим объектам с несовместимым состоянием?

Я использовал для хранения контекста в HttpContext при создании веб-приложений, но в WCF нет такой вещи, как HttpContext.

Где я могу хранить его, чтобы он использовался для каждого звонка?

Спасибо!

1 Ответ

0 голосов
/ 11 октября 2011

Вы можете использовать HttpContext в WCF.

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>

Я обычно кеширую свой DbContext в HttpContext, используя Structuremap HybridHttpOrThreadLocalScoped:

For<IDbContext>().HybridHttpOrThreadLocalScoped().Use(() => new MyDbContext());

Это можно сделать вручную, используя HttpContext.Current.Items.

Я полагаю, что это может быть сделано по-другому в чистом WCF, но можно использовать aspNetCompatibilityEnabled - imo.

Ура!

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