Доброго времени суток.
Столкнулся со специфичной проблемой на мой взгляд.
Описание проблемы:
Сайт работает на ASP.NET MVC, с использованием Ninject, запросы к базе осуществляются через асинхронные запросы.
Существует Repository с интерфейсом IRepository, UnitOfWork с IUnitOfWork, IDatabaseFactory с DataBaseFactory и сервисы которые работают с репозиториями
Все это дело соединяться через Ninject:
Bind<IUnitOfWork>().To<UnitOfWork>().InSingletonScope();
Bind<IDatabaseFactory>().To<DatabaseFactory>().InSingletonScope();
this.Bind(x => x
.From(typeof (UserRepository).Assembly)
.SelectAllClasses().InNamespaceOf(typeof (UserRepository))
.EndingWith("Repository")
.BindAllInterfaces()
.Configure(b => b.InSingletonScope()));
this.Bind(x => x
.From(typeof (UserService).Assembly)
.SelectAllClasses().InNamespaceOf(typeof (UserService))
.EndingWith("Service")
.BindAllInterfaces()
.Configure(b => b.InSingletonScope()));
Вся работа построена по следующему образу:
Запрос поступает в Контроллер с котроллера в сервис в котором инициализируется IRepository и IUnitOfWork
Сервис получает данные с репозитория асинхронно.
При добавлении/обновлении данных сервис отправляет данные в репозиторий и после этого в сервисе вызывается коммит через юнитОфВорк
Проблема:
Заметил странную особенность что когда я произвожу обновления записи через сервис, запись обновляется в базе данных, но при выборке измененных данных измененное поле с репозитория возвращает старое значение, которое было до изменения. Если проект перебилдить то при обновлении страницы подгрузятся данные свежие (корректные) из базы, но при повторном обновлении проблема сохраняется.
Что-то мне подсказывает что проблема в настройке Ninject
Помогите пожалуйста решить мою проблему.