powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Подскажите современную реализацию Unit of Work + EF.
25 сообщений из 96, страница 2 из 4
Подскажите современную реализацию Unit of Work + EF.
    #39352690
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fungus,

Создать свой интерфейс, например, IUnitOfWork, с единственным методом Commit (или ещё с одним CommitAsync). В реализации, иметь ссылку на DbContext и дёргать за SaveChanges при вызове Commit. Вот так будет начало положено.
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352695
Фотография Смузи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потрясающе.
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352696
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СмузиПриведи пример.

Код: c#
1.
2.
3.
4.
interface IUnitOfWork
{
   void Commit();
}
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352698
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СмузиПотрясающе.

Задавай вопросы, уточняй.
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352701
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttСмузиПриведи пример.

Код: c#
1.
2.
3.
4.
interface IUnitOfWork
{
   void Commit();
}


а может хотя бы Start добавить?
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352703
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosа может хотя бы Start добавить?

Зачем?
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352705
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

хоть время засечь :)
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352712
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos, засекай, кто тебе мешает?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
using (IUnitOfWork unitOfWork = unitOfWorkFactory.Create())
{
    Client client = clientRepository.GetById(clientId);

    client.Lock();

    unitOfWork.Commit();
}



http://blog.byndyu.ru/2010/07/2-unit-of-work_10.html
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352717
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По ссылке можно найти пример для EF:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
public interface IUnitOfWork : IDisposable
{
    void Save();
}

public class UnitOfWork : IUnitOfWork
{
    private readonly TransactionScope _transactionScope;
    private readonly ObjectContext _context;

    private bool needToAcceptChanges;

    protected UnitOfWork(ObjectContext context)
    {
        _context = context;
        _transactionScope = new TransactionScope();
    }

    public void Save()
    {
        _context.SaveChanges(SaveOptions.DetectChangesBeforeSave);
        _transactionScope.Complete();
        needToAcceptChanges = true;
    }

    public void Dispose()
    {
        if (needToAcceptChanges)
            _context.AcceptAllChanges();

        _context.Dispose();
        _transactionScope.Dispose();

        GC.SuppressFinalize(this);
    }
}
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352721
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

ну я думаю что Create совмещать со Start как то не очень
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352726
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosну я думаю что Create совмещать со Start как то не очень

А что в твоём понимание такое Start?

Начало жизни объекта UOW и есть старт транзакции по сути.
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352728
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttViPRosну я думаю что Create совмещать со Start как то не очень

А что в твоём понимание такое Start?

Начало жизни объекта UOW и есть старт транзакции по сути.
ну и х..во это
создать объект и дать ему задание - это 2 разные вещи
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352729
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

просто это фуфло опирается на траскшнскоп и ты это знаешь, потому кажется что все норм
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352730
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosну и х..во это
создать объект и дать ему задание - это 2 разные вещи

Так какое задание-то? Ты создал транзакцию. Зачем ещё её типа начинать? Масло маслянное.
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352734
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosskyANA,

ну я думаю что Create совмещать со Start как то не очень
Это new TransactionScope() для тебя тоже не очень?
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352736
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttViPRosну и х..во это
создать объект и дать ему задание - это 2 разные вещи

Так какое задание-то? Ты создал транзакцию. Зачем ещё её типа начинать? Масло маслянное.
нифига ты не создал а просто продублировал транзакшнскоп и то фигово
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352738
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAViPRosskyANA,

ну я думаю что Create совмещать со Start как то не очень
Это new TransactionScope() для тебя тоже не очень?
угу
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352739
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosskyANAпропущено...

Это new TransactionScope() для тебя тоже не очень?
угу
А SqlConnection.BeginTransaction ?
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352740
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAViPRosпропущено...

угу
А SqlConnection.BeginTransaction ?
вот это норм
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352746
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosskyANAпропущено...

А SqlConnection.BeginTransaction ?
вот это норм
То есть Begin норм, а Create не норм? :)
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352752
Фотография Смузи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttСмузиПриведи пример.

Код: c#
1.
2.
3.
4.
interface IUnitOfWork
{
   void Commit();
}



Эта "реальные проекты, в которых нужен свой UOW, так как рамки транзакции приложения могут быть гораздо шире, чем транзакция одной БД"?
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352757
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos, в чём ты видишь принципиальную разницу между этим

Код: c#
1.
2.
3.
4.
5.
6.
using (SqlTransaction transaction = connection.BeginTransaction("SampleTransaction"))
{
    // ...
    
    transaction.Commit();
}


и этим

Код: c#
1.
2.
3.
4.
5.
6.
using (IUnitOfWork unitOfWork = unitOfWorkFactory.Create())
{
    // ...

    unitOfWork.Commit();
}


?
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352804
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAViPRosпропущено...

вот это норм
То есть Begin норм, а Create не норм? :)
Да
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352805
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAViPRos, в чём ты видишь принципиальную разницу между этим

Код: c#
1.
2.
3.
4.
5.
6.
using (SqlTransaction transaction = connection.BeginTransaction("SampleTransaction"))
{
    // ...
    
    transaction.Commit();
}


и этим

Код: c#
1.
2.
3.
4.
5.
6.
using (IUnitOfWork unitOfWork = unitOfWorkFactory.Create())
{
    // ...

    unitOfWork.Commit();
}


?

второй может в себе включить много первого и еще тучу всего
но он должен стартануть как и первый
...
Рейтинг: 0 / 0
Подскажите современную реализацию Unit of Work + EF.
    #39352880
Fungus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA,

Приведенный вами пример кода взят из комментария к статье, в котором также написано "ну вот я набросал на скорую руку" :) Как быть, если проект разбит на несколько DLL, занимающимися разными сферами приложения? Создавать один могучий DbContext который объеденит все сущности всех библиотек что ли ? По идее это реализовывать как отдельные репозитории, сервисы. Но при этом они должны уметь работать под одной транзакцией. Как это реализовать в приведенном примере ? Не вижу, он не походит на реальное решение.

Про unit of work разговор уже много за годы. А нормальной реализации, что то не получается найти. Почему так ? Хотелось бы вот увидеть какую-то рабочую реализацию, проверенную на рабочих, не маленьких, проектах.
...
Рейтинг: 0 / 0
25 сообщений из 96, страница 2 из 4
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Подскажите современную реализацию Unit of Work + EF.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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