powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Ищу пример Unit of Work - для EF или Dapper (что лучше ?)
16 сообщений из 16, страница 1 из 1
Ищу пример Unit of Work - для EF или Dapper (что лучше ?)
    #39051551
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
Я не большой специалист в использовании паттерна repository и Unit Of Work.

Но очень хочется опробовать. Ищу вариант решения, чтобы не изобретать велосипед.

Можете пожалуйста поделится статьей, реальным примером ?

По поводу задачи.

Мне нужно сготовить сервис который забирает данные в RAW виде и складывает их в таблицу БД (в Raw виде). RAW тут - это XML.

Также есть таблица, в которой находятся распарсенные данные. Которые получены из RAW. Тут есть ссылка на RAW (из которого были распарсены данные) и дата.

Это справочник, который поддерживается в актуальном состоянии.

Вот. Хочется опробовать на такой простенькой задаче паттерны repository и Unit of Work. Помогите примером пожалуйста.

Таблицы такие:

RawData
id RawXml Data1 <...> 01.01.00012 <...> 01.02.0001

ParsedData
id RawDataId ParsingData ProductInfo1 1 01.01.0001 'Test Info1'2 1 01.01.0001 'Test Info2'3 2 01.02.0001 'Test Info3'4 2 01.02.0001 'Test Info4'
...
Рейтинг: 0 / 0
Ищу пример Unit of Work - для EF или Dapper (что лучше ?)
    #39051557
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И собственно вопрос - чем лучше пользоваться:
EF или Dapper.

Еще алгоритм работы :
1. Сервис запрашивает данные в RawXml. Кладет их в БД для историчности (настрою партиционирование и т.д.).
2. тут же парсит их и кладет в таблицу ParsedData.
...
Рейтинг: 0 / 0
Ищу пример Unit of Work - для EF или Dapper (что лучше ?)
    #39051855
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Еще алгоритм работы:
1. Сервис запрашивает данные в RawXml. Кладет их в БД для историчности (настрою партиционирование и т.д.).
2. тут же парсит их и кладет в таблицу ParsedData."


если это все, то ни то, ни другое вам не надо.
...
Рейтинг: 0 / 0
Ищу пример Unit of Work - для EF или Dapper (что лучше ?)
    #39052152
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmaw,

Не понял. что есть "ни то, ни другое вам не надо" ? А что тогда надо ?
Программа то должна быть, каким тогда способом, раз не этим ? )

Я решил поиграться с паттернами Unit of Work и Репозиторием на примере достаточно простой задаче.
...
Рейтинг: 0 / 0
Ищу пример Unit of Work - для EF или Dapper (что лучше ?)
    #39052185
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не нужен тут ни UoW, ни Repository. Зачем? Вы назначение шаблонов-то поняли, определение прочитали?
...
Рейтинг: 0 / 0
Ищу пример Unit of Work - для EF или Dapper (что лучше ?)
    #39052188
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И кстати EF - это сам по себе пример реализации Unit of Work.
...
Рейтинг: 0 / 0
Ищу пример Unit of Work - для EF или Dapper (что лучше ?)
    #39052202
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНе нужен тут ни UoW, ни Repository. Зачем? Вы назначение шаблонов-то поняли, определение прочитали?

Репозиторий - суть класс с методами Add, Delete, Update, Delete. Это нужно везде. В принципе.
UoW - как я понимаю, это расширение Репозитория. Добавлена поддержка транзакций. Чтобы не по 1 запись апдейтить, а 1000.

Возможно да, EF реализует Unit of Work. Но совсем чистым мне не хочется его использовать. Нужно разделение Доменных, Персистентных объектов.

Программа хоть и простая, но не совсем пустая. Что же тогда нужно ей, если не Репозиторий да ЮнитРаботы.
...
Рейтинг: 0 / 0
Ищу пример Unit of Work - для EF или Dapper (что лучше ?)
    #39052213
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekskyANAНе нужен тут ни UoW, ни Repository. Зачем? Вы назначение шаблонов-то поняли, определение прочитали?

Репозиторий - суть класс с методами Add, Delete, Update, Delete. Это нужно везде. В принципе.Походу не читали Вы ни фига.

http://design-pattern.ru/patterns/repository.html

Репозиторий - суть посредник между уровнями области определения и распределения данных (domain and data mapping layers), используя интерфейс, схожий с коллекциями для доступа к объектам области определения.
Вы RAW данные из одного места в другое переливаете, зачем тут Вам domain, data mapping layer и посредник между ними?
Вам нужен mapper .

ProBiotekUoW - как я понимаю, это расширение Репозитория. Добавлена поддержка транзакций. Чтобы не по 1 запись апдейтить, а 1000.Нет UoW - это не расширение Репозитория.

http://design-pattern.ru/patterns/unit-of-work.html

UoW обслуживает набор объектов, изменяемых в бизнес-транзакции (бизнес-действии) и управляет записью изменений и разрешением проблем конкуренции данных.

У Вас нет никаких бизнес-транзакций, Вы RAW данные из одного места в другое переливаете. Вам тут вообще транзакции не нужны.
Залили Вы половину XML, произошла ошибка, ну и фиг бы с ней. Тупо начнёте заного с того места, где упали.
...
Рейтинг: 0 / 0
Ищу пример Unit of Work - для EF или Dapper (что лучше ?)
    #39052395
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAУ Вас нет никаких бизнес-транзакций, Вы RAW данные из одного места в другое переливаете. Вам тут вообще транзакции не нужны.В этой задаче вообще не понятно, зачем тут EF или Dapper нужны...
"Голый" ADO.NET вполне рулит без всяких оверхед-надстроек.
skyANAЗалили Вы половину XML, произошла ошибка, ну и фиг бы с ней. Тупо начнёте заного с того места, где упали.Необходимость транзакций в БД пока еще никто не отменял...
...
Рейтинг: 0 / 0
Ищу пример Unit of Work - для EF или Dapper (что лучше ?)
    #39052433
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvНеобходимость транзакций в БД пока еще никто не отменял...Это то тут при чем?
...
Рейтинг: 0 / 0
Ищу пример Unit of Work - для EF или Dapper (что лучше ?)
    #39052743
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAsphinx_mvНеобходимость транзакций в БД пока еще никто не отменял...Это то тут при чем?Непосредственно к этому:
skyANAТупо начнёте заного с того места, где упали.Упасть посреди пакетной загрузки и "тупо начать с того места, где упали" - аккурат "самое то", если в БД во время процесса не была поднята транзакция...
...
Рейтинг: 0 / 0
Ищу пример Unit of Work - для EF или Dapper (что лучше ?)
    #39052971
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvskyANAпропущено...
Это то тут при чем?Непосредственно к этому:
skyANAТупо начнёте заного с того места, где упали.Упасть посреди пакетной загрузки и "тупо начать с того места, где упали" - аккурат "самое то", если в БД во время процесса не была поднята транзакция...Ни фига не понял.
...
Рейтинг: 0 / 0
Ищу пример Unit of Work - для EF или Dapper (что лучше ?)
    #39053072
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAsphinx_mvпропущено...
Непосредственно к этому:
пропущено...
Упасть посреди пакетной загрузки и "тупо начать с того места, где упали" - аккурат "самое то", если в БД во время процесса не была поднята транзакция...Ни фига не понял.
<Троль-мод ОН>

<Старт>
<Подключились к базе>
<Транзакцию не начинали>
INSERT ...
INSERT ...
INSERT ...
<Вот в этом месте возникла ошибка => ГоуТу в начало>
INSERT ...
INSERT ...
INSERT ...
<Транзакцию закрывать даже не собирались>
<Отключились от базы>
<Финиш>

Сколько записей будет вставлено, если второй проход пройдет без ошибок?
А если из-за ошибок будет еще не один проход?
А если на сервере будет автокоммит транзакций на каждую ДМЛ-команду?
А если автокоммита не будет, а сервер начинает транзакцию по умолчанию?
А если сервер при отключении выполнит авторолбэк?
<Троль-мод ОФФ>
...
Рейтинг: 0 / 0
Ищу пример Unit of Work - для EF или Dapper (что лучше ?)
    #39053263
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvskyANAпропущено...
Ни фига не понял.
<Троль-мод ОН>

<Старт>
<Подключились к базе>
<Транзакцию не начинали>
INSERT ...
INSERT ...
INSERT ...
<Вот в этом месте возникла ошибка => ГоуТу в начало>
INSERT ...
INSERT ...
INSERT ...
<Транзакцию закрывать даже не собирались>
<Отключились от базы>
<Финиш>

Сколько записей будет вставлено, если второй проход пройдет без ошибок?
А если из-за ошибок будет еще не один проход?
А если на сервере будет автокоммит транзакций на каждую ДМЛ-команду?
А если автокоммита не будет, а сервер начинает транзакцию по умолчанию?
А если сервер при отключении выполнит авторолбэк?
<Троль-мод ОФФ>

Задача массовой загрузки чего-то в БД. Там много вариантов. Транзакции к этому всему имеют опосредованное отношение. Это какая-то утилитарная операция, а если нет, то тогда для ТС все вообще слезы и печаль
...
Рейтинг: 0 / 0
Ищу пример Unit of Work - для EF или Dapper (что лучше ?)
    #39053537
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvskyANAпропущено...
Ни фига не понял.
<Троль-мод ОН>

<Старт>
<Подключились к базе>
<Транзакцию не начинали>
INSERT ...
INSERT ...
INSERT ...
<Вот в этом месте возникла ошибка => ГоуТу в начало>
INSERT ...
INSERT ...
INSERT ...
<Транзакцию закрывать даже не собирались>
<Отключились от базы>
<Финиш>

Сколько записей будет вставлено, если второй проход пройдет без ошибок?
А если из-за ошибок будет еще не один проход?
А если на сервере будет автокоммит транзакций на каждую ДМЛ-команду?
А если автокоммита не будет, а сервер начинает транзакцию по умолчанию?
А если сервер при отключении выполнит авторолбэк?
<Троль-мод ОФФ>Создайте отдельный топик и там обсуждайте свою тролль-проблему..
...
Рейтинг: 0 / 0
Ищу пример Unit of Work - для EF или Dapper (что лучше ?)
    #39053655
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAsphinx_mvпропущено...

<Троль-мод ОН>

<Старт>
<Подключились к базе>
<Транзакцию не начинали>
INSERT ...
INSERT ...
INSERT ...
<Вот в этом месте возникла ошибка => ГоуТу в начало>
INSERT ...
INSERT ...
INSERT ...
<Транзакцию закрывать даже не собирались>
<Отключились от базы>
<Финиш>

Сколько записей будет вставлено, если второй проход пройдет без ошибок?
А если из-за ошибок будет еще не один проход?
А если на сервере будет автокоммит транзакций на каждую ДМЛ-команду?
А если автокоммита не будет, а сервер начинает транзакцию по умолчанию?
А если сервер при отключении выполнит авторолбэк?
<Троль-мод ОФФ>Создайте отдельный топик и там обсуждайте свою тролль-проблему.."Не говорите, что мне делать, и я не скажу куда Вам идти" (с)
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Ищу пример Unit of Work - для EF или Dapper (что лучше ?)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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