Я только начал получать удовольствие от MVC, когда кто-то упомянул мне контейнеры IoC, и теперь я чувствую, что упал на несколько тысяч футов и вам нужно снова подняться. У меня возникло соблазн просто игнорировать их, но затем я прочитал «Компонентный образ жизни». Мне кажется, что это очень важно для меня, как объяснено, недействительные изменения в обновлениях базы данных могут протекать через запросы, если для моих репозиториев Lifestyle установлено значение Singleton вместо PerWebRequest.MVC IoC Component Lifestyle PerWebRequest
Так что мой вопрос ... есть способ создать Компонент Lifestyle влияет без использования контейнеров IoC или это единственный вариант?
Спасибо ... отделив мой код * приятно *, но не жизненно важен для меня в это время. Тем не менее, целостность данных по запросам * жизненно важна *, и я обеспокоен тем, что без IoC я как-то открываю свое приложение для возможных проблем с коррупцией. (ПРИМЕЧАНИЕ: мне еще предстоит реализовать реальное приложение с использованием MVC - всего четыре или пять демонстрационных приложений. Я только что читал две книги по этому вопросу - и объект контейнера IoC бросил меня на цикл) – dizzyguy
«Ваш * SqlProductsRepository «в настоящее время этот образ жизни Singleton, поэтому вы сохраняете один LINQ to SQL * DataContext * до тех пор, пока ваше приложение запускается, деля его по всему запросу. Это может показаться прекрасным ... потому что пока доступ к данным доступен только для чтения, но это приведет к проблемам при запуске редактирования данных. Непредусмотренные изменения начнут протекать через запросы ». - Pro ASP.NET MVC Framework, стр. 101 – dizzyguy
Если вы создаете экземпляр вашего контекста данных в контроллере или службе и« вставляете »это в свой репозиторий или хранилища для этой транзакции. .. then call commit ... и затем убить, что isntance контекста данных вы «должны» быть в порядке. Я никогда не оставляю свой datacontext открытым на протяжении жизненного цикла приложения. Он не находится за пределами транзакции. .., который я нашел безопасным способом сделать это. –