Что не так с этим дизайном системы ASP.net MVC? - PullRequest
0 голосов
/ 07 февраля 2011

У меня есть фотогалерея ASP.Net MVC 3, которая разработана таким образом:

Data Repositories(IImageRepoSitory, ITagRepository etc)
      |
   Services (IGalleryService, IWebService etc)
      |
  Web Application

Который я использую Ninject для добавления необходимых сервисов и репозиториев в веб-приложение.

Прежде чем использовать реальную базу данных, я использовал простой ArrayList (и сериализацию JSON) в качестве моей постоянной логики (это будет JsonImageRepository / JSonTagRepository), которая прекрасно работает. Но позже я перешел на EF4 CTP5 (Code First), и появилось много проблем. По сути, я внедрил эти репозитории и сервисы как Singleton (который объявлен в Global.asax.cs), но когда у меня есть несколько потоков, которые обращаются к репозиториям, он говорит:

Соединение данных закрыто.

Я изменил что-то вроде режима потока или режима запроса в Ninject, но возникли различные исключения (в отношении нескольких экземпляров контекста, поэтому я думаю, что Singleton должен быть единственным вариантом).

Что-то не так с дизайном? или как мне настроить эти компоненты?

1 Ответ

4 голосов
/ 07 февраля 2011

Обычно доступ к хранилищу должен быть в области запроса (по крайней мере, те, которые изменяют данные).Я рекомендую просмотреть сообщения в блоге Боба о реализации шаблона репозитория с использованием Ninject и NHibernate.Это должно быть примерно так же для EF4:

http://blog.bobcravens.com/2010/06/the-repository-pattern-with-linq-to-fluent-nhibernate-and-mysql/

http://blog.bobcravens.com/2010/07/using-nhibernate-in-asp-net-mvc/

http://blog.bobcravens.com/2010/09/the-repository-pattern-part-2/

Я планировал добавить это к образцуприложение в ближайшее время.

...