Я играю с Entity Framework, чтобы посмотреть, как его можно использовать в новом проекте, над которым я работаю.Я поместил мой файл edmx в библиотеку классов, чтобы объекты (и доступ к базе данных) могли использоваться в нескольких местах.В настоящее время у меня есть веб-проект и консольный проект, которые ссылаются на библиотеку классов.
Одна из моих сущностей имеет класс Partial, определенный статическим методом.Цель метода - принять некоторые параметры и создать один или несколько экземпляров определенного класса.Моя первая версия метода создала экземпляр ObjectContext, создал класс Entity (или классы) и вернул Entities вызывающему методу.Затем вызывающий метод обновил некоторые свойства и попытался сохранить сущности, используя новый экземпляр ObjectContext.Очевидно, это не сработало, потому что сущности были привязаны (правильный термин ??) к контексту, созданному в статическом методе.
После некоторых исследований я изменил статический метод, чтобы также принимать ссылку ObjectContext, чтобы гарантировать, что всеОбъекты, где они были созданы, а затем обработаны и сохранены с использованием того же контекста.Это работает нормально, но дизайн кажется неправильным.
Предполагая, что мой один статический метод может перерасти во многие другие, или что мое приложение (особенно веб-приложение), вероятно, получит выгоду от дополнительных слоев (DAL или даже Сервис)Layer), имеет ли смысл для всех этих классов требовать параметр ObjectContext?
Я читал во многих публикациях, что создание ObjectContext с помощью шаблона Singleton - плохая идея, потому что "многие клиенты будут использовать один и тот же объект».Моя проблема в том, что я не понимаю, как это возможно.В локальном консольном приложении только один пользователь запускает приложение.В веб-приложении на каждый запрос может быть только один пользователь.Где проблема с разделением пользователей?Ни одна статья / публикация не упоминала об этом ... но где они ссылаются на шаблон Singleton, хранящий экземпляр объекта в контексте приложения?
Я также видел публикации, посвященные использованию сети и хранению экземпляра объекта вОбъект Session пользователя через объект HttpContext.Это имеет смысл, но, по-видимому, не касается использования вне Интернета.
Я думаю, что любое подходящее решение (статический метод, объект Factory и т. Д.), Скорее всего, будет реализовано в моей библиотеке классов, так что, очевидно, это необходимоподдерживать как веб, так и не веб-решения.Может быть, проверьте HttpContext, чтобы определить, в какой среде он работает.
Я надеялся http://www.west -wind.com / weblog / posts / 2008 / Feb / 05 / Linq-to-SQL-DataContext-Lifetime-Management было бы информативно, но мне трудно обернуть голову вокруг поста, и пример кода кажется излишним для создания экземпляров и совместного использования простого объекта.(Хотя я уверен, что просто не понимаю ...)
Любые мысли приветствуются.
Спасибо.