Я использую Ninject с приложением MVC, также использую EF4.1 Code First. У меня возникает проблема при попытке проверить, что я могу сделать запрос из двух разных экземпляров браузера.
В основном, если я нажимаю на кнопку входа в оба браузера примерно одновременно, я получаю сообщение об ошибке, в котором говорится, что «контекст нельзя использовать во время создания модели».
Теперь мое первое предположение состоит в том, что у меня есть конфликтующие экземпляры, и поэтому я неправильно устанавливаю область действия в контекстах.
У меня есть контекст базового класса, который содержит необходимые таблицы, я наследую от этого. Затем у меня есть фабрика, которая внедряется и отвечает за фактическое создание контекста, когда я запрашиваю свой репозиторий.
public class ContextFactory
{
TContext Create<TContext>( )
}
Мне нужно сделать это, так как моя строка подключения определяется во время выполнения, поэтому я не могу просто использовать строку подключения, содержащуюся в файле web.config
public class Repository : BaseRepository<MyObject>
{
public Repository(IContextFactory factory) : base(factory)
{
}
}
Идея состоит в том, что когда мне нужен мой репозиторий, я внедряю репозиторий, он имеет свой собственный инжекционный процесс, создает его контекст, и я могу предоставить некоторую реализацию по умолчанию.
Моя следующая проблема - я неправильно закрываю или уничтожаю некоторые экземпляры. Я использовал пример кого-то другого для установки определенных данных объекта в области видимости сеанса, но большинство я пытаюсь использовать OnRequestScope.