Установка свойств с использованием Unity XML - PullRequest
1 голос
/ 04 июля 2011

Я хочу установить Entity Framework ObjectContext в классе репозитория - ObjectContext является свойством репозитория.

Я использую конфигурацию Unity XML:

<register type="IUsersRepository" mapTo="SqlUsersRepository" >
  <property name="MyObjectContext">
    <value value="Per-Request" typeConverter="ObjectContextTypeConverter" />
  </property>
</register>

ObjectContextTypeConverter интерпретирует значение свойства - в данном случае «По запросу» - и использует ObjectContext, хранящийся в HttpContext.Current.Items (по коллекции запросов в asp.net).

Метод ObjectContextTypeConverter.ConvertFrom вызывается только один раз, когда конфигурации Unity загружаются в метод Application_Start файла Global.asax. Тем не менее, когда я пытаюсь разрешить интерфейс с помощью Unity - метод ConvertFrom больше не будет вызываться.

Есть ли способ решить эту проблему?

1 Ответ

0 голосов
/ 05 июля 2011

Причина в том, что вы устанавливаете его как значение. Вы можете установить его как зависимость:

<property name="MyObjectContext">
    <dependency />
</property>

и добавить контекст через фабрику ввода:

Container.RegisterType<ObjectContext>(
    new InjectionFactory(c => GetTheContextInstance()));
...