powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Один объект Контекста данных на все приложение
12 сообщений из 12, страница 1 из 1
Один объект Контекста данных на все приложение
    #38052197
xpoft2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пишу небольшое приложение по получению данных о товарах с сайта поставщика, с БД работаю посредством EF.

Возникла идея использовать один раз созданный объект контекста данных на все приложение, но предследует непримиримый внутренний конфликт, чем то такой подход будет плох, разъясните пожалуйста почему так делать нельзя или почему все таки такая реализация приемлема.

Заранее благодарен!
...
Рейтинг: 0 / 0
Один объект Контекста данных на все приложение
    #38052209
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xpoft2010,
на все приложения,
или на всё приложение?
И что преследует эта цель?
...
Рейтинг: 0 / 0
Один объект Контекста данных на все приложение
    #38052227
xpoft2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На ВСЁ приложение, по сути хочу использовать паттерн - одиночка.

Цель преследуется следующая:
Имеется некий класс который выполняет получение данных с сайта о товаре, далее эти данные необходимо сохранить в БД (предварительно некоторые данные необходимо удалить из БД), естественно все операции должны выполняться в одной транзацкии. Сама идеология класса такова, что контекст передавать в него непосредственно было бы неправильно - его суть заключается в том, чтобы получить данные с сайта и с помощью парсера - распарсить, далее через класс Адаптер товара - изменить св-ва самого товара.

На самом деле контекст потребуется как раз в классе Адаптера товара, а как следствие передавать объект контекста данных еще глубже по цепочке - совсем плохой подход. Отсюда и появилась идея использовать единый один раз созданный контекст во всем приложении.

PS: Пока писал, понял, что имеются в моей архитектуре некоторые изъяны, но тем не менее вопрос остается открытым: "Чем плох подход использовать одиночку?"
...
Рейтинг: 0 / 0
Один объект Контекста данных на все приложение
    #38052234
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xpoft2010,
да нет проблем, получайте данные , кешируйте, работайте изменяйте сохраняйте, ничего тут плохого нет, пользователь ведь один, какие проблемы, данные всегда достоверны, вполне разумно..
...
Рейтинг: 0 / 0
Один объект Контекста данных на все приложение
    #38052249
xpoft2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ!
А если использовать подобный подход в каком либо бизнес приложении обладающем гораздо более широким функционалом, чем в приведенном примере?
...
Рейтинг: 0 / 0
Один объект Контекста данных на все приложение
    #38052266
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xpoft2010Спасибо за ответ!
А если использовать подобный подход в каком либо бизнес приложении обладающем гораздо более широким функционалом, чем в приведенном примере?
скорее не функционалом, осмелюсь Вас поправить, многопользовательской средой на изменения данных в базе.
то есть изменения может делать много людей в одно и тоже время.
Ничего тут ущербного нет многие орм используют механизм кеширования, да же многоуровневое, для сесии - как единицы работы с данными так и уровень глобальный для всего приложения второй уровень, ну это как бы я считаю не основная а добавочная опция орм, кеш второго уровня можно отменить, в первом уровне получать с базы, мима кеша, основная проблема,это достоверность данных,( ты изменяешь запись, а ее уже нет,- удалил другой пользователь, ну и тут есть много механизмов
...
Рейтинг: 0 / 0
Один объект Контекста данных на все приложение
    #38052276
xpoft2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Аа, т.е. сам подход имеет право на жизнь, и вся дилемма сводится к актуальности закешированных данных!
Спасибо огромное! :)
...
Рейтинг: 0 / 0
Один объект Контекста данных на все приложение
    #38052832
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xpoft2010,

подозреваю, что в EF DataContext, как и сессия в хибере, ни разу не потокобезопасный. Поэтому в случае многопользовательского доступа накушаетесь неприятностей.
И вообще, такие объекты тратят ресурсы (подключения, транзакции и т.д.). Поэтому их должна быть короткой.
...
Рейтинг: 0 / 0
Один объект Контекста данных на все приложение
    #38062432
Vertigo02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня вопрос сходный с вопросом ТС.
Программирую CodeFirst, DbContext ограничен пределами единицы работы, и соответственно в классе UnitOfWork и создается.
UI - Windows Forms. Единица работы небольшая и обычно обслуживает один раздел (например все сущности, связанные с классом Person)


UnitOfWork создается в в форме родителе) и передается в конструкторы дочерних форм (обычно 3-7 форм) при их вызове.
Время жизни UnitOfWork (и соответственно dbcontext) на данный момент ограниченно временем жизни формы-родителя, обслуживающей единицу работы.

Правилен ли такой подход?
Стоит ли заморачиваться с отдельным экземпляром UoW для каждой формы и передачей графов объектов? Либо наоборот укрупнить контекст и забыть про синхронизацию контекстов?
...
Рейтинг: 0 / 0
Один объект Контекста данных на все приложение
    #38063745
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vertigo02У меня вопрос сходный с вопросом ТС.
Программирую CodeFirst, DbContext ограничен пределами единицы работы, и соответственно в классе UnitOfWork и создается.
UI - Windows Forms. Единица работы небольшая и обычно обслуживает один раздел (например все сущности, связанные с классом Person)


UnitOfWork создается в в форме родителе) и передается в конструкторы дочерних форм (обычно 3-7 форм) при их вызове.
Время жизни UnitOfWork (и соответственно dbcontext) на данный момент ограниченно временем жизни формы-родителя, обслуживающей единицу работы.

Правилен ли такой подход?
Стоит ли заморачиваться с отдельным экземпляром UoW для каждой формы и передачей графов объектов? Либо наоборот укрупнить контекст и забыть про синхронизацию контекстов?

нет

создавай dbcontext, когда непросредственно читаешь или записываешь данные, в промежутке между этими действиями он нах не нужет, то же относится и к ТС
...
Рейтинг: 0 / 0
Один объект Контекста данных на все приложение
    #38063827
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vertigo02UnitOfWork создается в в форме родителе) и передается в конструкторы дочерних форм (обычно 3-7 форм) при их вызове.
Время жизни UnitOfWork (и соответственно dbcontext) на данный момент ограниченно временем жизни формы-родителя, обслуживающей единицу работы.

Вот это примерно то, что надо. Контекст живёт только на время выполнения работы, потом закрывается.
...
Рейтинг: 0 / 0
Один объект Контекста данных на все приложение
    #38065988
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xpoft2010,

Context не потокобезопасен, поэтому такие штуки я бы не посоветовал. Много читал информации на эту тему - создание контекса легкая операция, поэтому не вижу смысла держать его одного.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Один объект Контекста данных на все приложение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]