powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF + Repository + DI
45 сообщений из 45, показаны все 2 страниц
EF + Repository + DI
    #38898918
xxxTIMxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый!

Возник намедни такой вопрос. Есть у меня реализация репозитория:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public SomeEntityRepository : ISomeEntityRepository
{
   private DbContext _context;

   public SomeEntityRepository()
   {
       _context = new DbContext();
   }

   ........
}


Используется Constructor Injection:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public SomeEntityService : ISomeEntityService
{
   private ISomeEntityRepository _someEntityRepository;

   public SomeEntityService(ISomeEntityRepository someEntityRepository)
   {
       _someEntityRepository = someEntityRepository;
   }

   ........
}



Как правильно делать, каждый раз создавать новый экземпляр SomeEntityRepository или чтобы один раз создался и IoC-контейнер возвращал созданный при первом обращении? Насколько вообще хорошая практика хранить в контейнере экземпляры в единственном числе?
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38898967
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xxxTIMxxxКак правильно делатьОт приложения зависит. В большинстве случаев контейнеру указывают, чтобы создавал один экземпляр на поток, или запрос.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38899326
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xxxTIMxxxКак правильно делать...DbContext так же должен инжектироваться контейнером + совет от skyANA.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38899331
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xxxTIMxxxНасколько вообще хорошая практика хранить в контейнере экземпляры в единственном числе?

Плохая практика. Создаёшь контекст, делаешь че надо, убиваешь контекст.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38899332
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttxxxTIMxxxНасколько вообще хорошая практика хранить в контейнере экземпляры в единственном числе?

Плохая практика. Создаёшь контекст, делаешь че надо, убиваешь контекст.И таскаешь его параметром методов между сервисами.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38899366
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КИ таскаешь его параметром методов между сервисами.

Ето как?
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38899394
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КИ таскаешь его параметром методов между сервисами.

Ето как?Это видимо какая-то своя реализация Unit of Work.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38899411
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЭто видимо какая-то своя реализация Unit of Work.

Не понятно как ето таскать параметром методов.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38899443
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAЭто видимо какая-то своя реализация Unit of Work.

Не понятно как ето таскать параметром методов.А я понял как, у нас в старом г-коде тоже много где встречается:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
using NHibernate;

public class SomeService
{
    public Something GetSomething(ISession session, ...)
    {
       ...
    }
}



Мы это г. активно рефакторим.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38899531
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КИ таскаешь его параметром методов между сервисами.

Ето как?Если в разных методах понадобится один контекст.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38899533
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttпропущено...


Не понятно как ето таскать параметром методов.А я понял как, у нас в старом г-коде тоже много где встречается:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
using NHibernate;

public class SomeService
{
    public Something GetSomething(ISession session, ...)
    {
       ...
    }
}



Мы это г. активно рефакторим.Да.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38899561
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА я понял как, у нас в старом г-коде тоже много где встречается:

Алексей КЕсли в разных методах понадобится один контекст.

А, ну я так и подумал, передавать зависимость ручками.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38899571
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КhVosttпропущено...


Ето как?Если в разных методах понадобится один контекст.1. Для этого не обязательно его передавать в параметрах метода;
2. Ты кстати можешь оценить насколько часто может "понадобится один контекст в разных методах"?
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38899574
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
Если в разных методах понадобится один контекст.1. Для этого не обязательно его передавать в параметрах метода;Ну я и предложил вынести его на уровень класса и подсовывать снаружи диконтейнером.
skyANA2. Ты кстати можешь оценить насколько часто может "понадобится один контекст в разных методах"?У меня часто, у остальных - не знаю.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38899579
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
1. Для этого не обязательно его передавать в параметрах метода;Ну я и предложил вынести его на уровень класса и подсовывать снаружи диконтейнером.Через конструктор, свойство, как?
Алексей КskyANA2. Ты кстати можешь оценить насколько часто может "понадобится один контекст в разных методах"?У меня часто, у остальных - не знаю.больше 50%?
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38899593
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
Ну я и предложил вынести его на уровень класса и подсовывать снаружи диконтейнером.Через конструктор, свойство, как?Конструктор, свойство - как больше нравится, как умеет диконтейнер.
skyANAАлексей Кпропущено...
У меня часто, у остальных - не знаю.больше 50%?Достаточно часто, чтобы не таскать в параметрах.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38899665
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
Через конструктор, свойство, как?Конструктор, свойство - как больше нравится, как умеет диконтейнер.
skyANAпропущено...
больше 50%?Достаточно часто, чтобы не таскать в параметрах.Понятно, вообщем как у нас.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38899670
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К, а зачем ты вообще это написал: 17362427 ?
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38899736
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей К, а зачем ты вообще это написал: 17362427 ?Потому что это приведёт к случаю, пример которого ты привёл.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38899780
xxxTIMxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttxxxTIMxxxНасколько вообще хорошая практика хранить в контейнере экземпляры в единственном числе?

Плохая практика. Создаёшь контекст, делаешь че надо, убиваешь контекст.
Т.е. и сервис должен создаваться каждый раз новый?
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38899860
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xxxTIMxxxhVosttпропущено...


Плохая практика. Создаёшь контекст, делаешь че надо, убиваешь контекст.
Т.е. и сервис должен создаваться каждый раз новый?

да, конечно. если операции повторяющиеся часто, можно организовать пул. в простейшем варианте можно хранить сервисы и контекст, но лучше сразу избавляться от такого подхода, будет слегка сложнее, но в итоге гораздо меньше боли.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38899976
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xxxTIMxxxhVosttпропущено...


Плохая практика. Создаёшь контекст, делаешь че надо, убиваешь контекст.
Т.е. и сервис должен создаваться каждый раз новый?Зависит от архитектуры. Например, если это веб-приложение, то удобно привязывать время жизни сервисов и DbContext к http-запросу.

Но об этом уже было сказано.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38900038
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЗависит от архитектуры. Например, если это веб-приложение, то удобно привязывать время жизни сервисов и DbContext к http-запросу.

Но об этом уже было сказано.

А если не веб?
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38900046
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

А разве большая разница веб или не веб? Там по-моему вообще один фиг разница, на UI не это завязано. А цикл жизни объекта определается вне зависимости от этого.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38900053
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronhVostt,

А разве большая разница веб или не веб? Там по-моему вообще один фиг разница, на UI не это завязано. А цикл жизни объекта определается вне зависимости от этого.

Так к чему привязывать, если нет Http-запросов?
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38900058
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttAxeleronhVostt,

А разве большая разница веб или не веб? Там по-моему вообще один фиг разница, на UI не это завязано. А цикл жизни объекта определается вне зависимости от этого.

Так к чему привязывать, если нет Http-запросов?

К событиям?
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38900063
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КЗависит от архитектуры. Например, если это веб-приложение, то удобно привязывать время жизни сервисов и DbContext к http-запросу.

Но об этом уже было сказано.

А если не веб?С WCF-ным сервером тоже самое. А если десктоп, то сейчас придёт МСУ и скажет, что двухзвенка - зло!

Но можно попробовать врукопашную управлять областями контейнера , может даже привязать это к событиям десктопного приложения вроде Idle.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38900072
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronhVosttпропущено...


Так к чему привязывать, если нет Http-запросов?

К событиям?При асинхронном взаимодействием десктопного приложения с сервером, что в наше время считается "хорошим тоном", это может оказаться не так просто.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38900109
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronК событиям?

Скорее, к действиям пользователя, тогда когда есть определённая операция с данными.

Алексей КС WCF-ным сервером тоже самое. А если десктоп, то сейчас придёт МСУ и скажет, что двухзвенка - зло!

Не-не, рассматривается 2-х звенка, а не зло там она или не зло ))

Алексей КНо можно попробовать врукопашную управлять областями контейнера , может даже привязать это к событиям десктопного приложения вроде Idle.

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

Алексей КПри асинхронном взаимодействием десктопного приложения с сервером, что в наше время считается "хорошим тоном", это может оказаться не так просто.

Ну это разные потоки, не проблема, пока хотя бы для одного клиента.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38900143
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Ну как-то так для асинхронного:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
static class ScopeFactory
{
    // ...
}

//...

async void button_click(object sender, EventArgs e)
{
    using(var s = ScopeFactory.GetScope())
    {
        await s.Resolve<IMyService>().Execute();
    }
}

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

Повторюсь, при синхронном выполнении в UI-потоке можно попробовать привязать уничтожение области к событию Idle, но я бы не стал устраивать такие ограничения.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38900487
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КЗависит от архитектуры. Например, если это веб-приложение, то удобно привязывать время жизни сервисов и DbContext к http-запросу.

Но об этом уже было сказано.

А если не веб?К потоку.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38900641
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttпропущено...


А если не веб?К потоку.К какому? При продолжении через I/O Completion Port потоков много.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38900666
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
К потоку.К какому? При продолжении через I/O Completion Port потоков много.

Видимо имеется в виду основной поток приложения.

Пока не вижу смысла стыковаться к потоку. В зависимости от задачи, время жизни сервиса для выполнения некоего действия (бизнес-операции) должно быть сопоставимо с началом и окончанием этой операции.

Допустим, открываем большую форму редактирования, для всей формы создаётся контекст, в рамках которого живут полученные сервисы. При сохранении выполняется пакетное сохранение данных контекста, при отмене контекст просто убивается и всё.

Я делал так, но и приложения для десктопа не были достаточно сложными, применялись те же принципы, что и в веб, только вместо веб-запроса использовалась концепция операции (связанная, обычно, с командой). Т.е. контекст долго не жил. Там, где требовались табличные данные (гриды, деревья, списки), использовалось кеширование с подкачкой данных через создаваемый для этих целей контектс.

Под контекстом имеется в виду не DbContext, а абстракция типа HttpContext-а, только для бизнес-операции, контекст создавался со своим life time scope, умервщлялся убийством scope вместе со всеми своими зависимостями. Сложная операция может порождать подконтексты по тому же принципу.

От большого контекста на поток отказался сразу. Всё, что жило в памяти, это кеш и оперативные данные (на самом деле просто живущие как синглетоны в контейнере).
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38900688
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей Кпропущено...
К какому? При продолжении через I/O Completion Port потоков много.

Видимо имеется в виду основной поток приложения.

Пока не вижу смысла стыковаться к потоку. В зависимости от задачи, время жизни сервиса для выполнения некоего действия (бизнес-операции) должно быть сопоставимо с началом и окончанием этой операции.

Допустим, открываем большую форму редактирования, для всей формы создаётся контекст, в рамках которого живут полученные сервисы. При сохранении выполняется пакетное сохранение данных контекста, при отмене контекст просто убивается и всё.

Я делал так, но и приложения для десктопа не были достаточно сложными, применялись те же принципы, что и в веб, только вместо веб-запроса использовалась концепция операции (связанная, обычно, с командой). Т.е. контекст долго не жил. Там, где требовались табличные данные (гриды, деревья, списки), использовалось кеширование с подкачкой данных через создаваемый для этих целей контектс.

Под контекстом имеется в виду не DbContext, а абстракция типа HttpContext-а, только для бизнес-операции, контекст создавался со своим life time scope, умервщлялся убийством scope вместе со всеми своими зависимостями. Сложная операция может порождать подконтексты по тому же принципу.

От большого контекста на поток отказался сразу. Всё, что жило в памяти, это кеш и оперативные данные (на самом деле просто живущие как синглетоны в контейнере).на примере StructureMap: http://docs.structuremap.net/Scoping.htm

Имелись в виду пункты 6 и 3.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38900705
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttприменялись те же принципы, что и в вебВ веб же какой основной принцип? Выполнил команду, закрой соединение и верни его в пул, т.к. в большинстве случаев все работают под одной учёткой, в одном application domain, в одном процессе.

В десктопе же у пользователя свой личный пул и играть с ним в пинг-понг не имеет особого смысла.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38900770
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttприменялись те же принципы, что и в вебВ веб же какой основной принцип? Выполнил команду, закрой соединение и верни его в пул, т.к. в большинстве случаев все работают под одной учёткой, в одном application domain, в одном процессе.

В десктопе же у пользователя свой личный пул и играть с ним в пинг-понг не имеет особого смысла.

А ещё есть мысли кроме идеи «десктоп это не веб»?
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38900816
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAпропущено...
В веб же какой основной принцип? Выполнил команду, закрой соединение и верни его в пул, т.к. в большинстве случаев все работают под одной учёткой, в одном application domain, в одном процессе.

В десктопе же у пользователя свой личный пул и играть с ним в пинг-понг не имеет особого смысла.

А ещё есть мысли кроме идеи «десктоп это не веб»?Мысли насчёт чего? Вот ты ещё какие "принципы, что и в веб" можешь озвучить и на чём они основаны?
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38901460
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМысли насчёт чего? Вот ты ещё какие "принципы, что и в веб" можешь озвучить и на чём они основаны?

Я же озвучил, в веб удобно ограничивать конекст http запросом потому, что обычно запрос является атомарной операцией, приложение строится на этом принципе, если конечно не удерживать состояние на сервере.

У десктопного приложения есть основной поток, и он является единственным основным потоком до момента закрытия приложения. Привязываемся к этому потоку? По сути это значит, делать контекст синглетоном, и всё тут. Или ты имел в виду что-то другое?
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38901643
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAМысли насчёт чего? Вот ты ещё какие "принципы, что и в веб" можешь озвучить и на чём они основаны?

Я же озвучил, в веб удобно ограничивать конекст http запросом потому, что обычно запрос является атомарной операцией, приложение строится на этом принципе, если конечно не удерживать состояние на сервере.

У десктопного приложения есть основной поток, и он является единственным основным потоком до момента закрытия приложения. Привязываемся к этому потоку? По сути это значит, делать контекст синглетоном, и всё тут. Или ты имел в виду что-то другое?Насчёт DbContext не скажу (с EF не работал), а вот держать открытое соединение (DbConnection) - это вполне себе нормально.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38901749
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНасчёт DbContext не скажу (с EF не работал), а вот держать открытое соединение (DbConnection) - это вполне себе нормально.

Соединение это совсем другое. EF DbContext эт чистый UOW практически, исходя из этого я спрашивал, есть ли другие широко известные способы работы с ним.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38903282
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAНасчёт DbContext не скажу (с EF не работал), а вот держать открытое соединение (DbConnection) - это вполне себе нормально.

Соединение это совсем другое. EF DbContext эт чистый UOW практически, исходя из этого я спрашивал, есть ли другие широко известные способы работы с ним.Хорошо, давай разбираться.

UoW нужен для того, чтобы отслеживать действия над объектами (создание, изменение, удаление) и выполнять соответсвующие запросы (INSERT, UPDATE, DELETE) во время Commit (или Flush, или что там в EF).

В ADO.NET он реализован где? Правильно, в DataSet. И вот тебе самый, что ни на есть "широко известные способы работы с ним" :)

Также UoW тесно связан с бизнес-транзакциями, это да. Но не обязательно одна бизнесс-транзакция == один объект, реализующий UoW.
На том же DataSet можно показать, что выполнили пачку каких-то действий, вызвали DataAdapter.Update(DataSet dataSet) и DataSet.AcceptChanges() .
И продолжаем работать дальше.

И в случае NHibernate сделали Flush и продолжаем работать дальше.
И в EF думаю можно также.

Ну и lifecycle сервиса != lifecycle UoW.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38903285
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДопустим, открываем большую форму редактирования, для всей формы создаётся контекст, в рамках которого живут полученные сервисы. При сохранении выполняется пакетное сохранение данных контекста, при отмене контекст просто убивается и всё.Вот тут надо задуматься, а выполнит ли контейнер Release сразу при закрытии формы.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38903385
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТакже UoW тесно связан с бизнес-транзакциями, это да. Но не обязательно одна бизнесс-транзакция == один объект, реализующий UoW.

Вообще-то говоря, желательно, так как в рамках одного объекта, реализующего UoW отслеживаются все изменения и взаимосвязи данных, коммит сохраняет полное состояние операции. Если объектов будет больше, теоретически может возникнуть несогласованное состояние.

skyANAВ ADO.NET он реализован где? Правильно, в DataSet. И вот тебе самый, что ни на есть "широко известные способы работы с ним" :)

Я бы с натяжечкой DataSet включал в ADO.NET ) Скорее, это средство работы с ним.

skyANAИ в случае NHibernate сделали Flush и продолжаем работать дальше.
И в EF думаю можно также.

Ну и lifecycle сервиса != lifecycle UoW.

В общем, да. Но что происходит в NHibernate, если Flush выполнить не удалось? База данных не пропустила.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38903388
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВот тут надо задуматься, а выполнит ли контейнер Release сразу при закрытии формы.

Честно говоря без разницы, сразу будет Release или чуть позже, это ни на что не влияет, так как мы выходим из scope.
...
Рейтинг: 0 / 0
EF + Repository + DI
    #38903722
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAТакже UoW тесно связан с бизнес-транзакциями, это да. Но не обязательно одна бизнесс-транзакция == один объект, реализующий UoW.

Вообще-то говоря, желательно, так как в рамках одного объекта, реализующего UoW отслеживаются все изменения и взаимосвязи данных, коммит сохраняет полное состояние операции. Если объектов будет больше, теоретически может возникнуть несогласованное состояние.Я не верно выразился. Надо читать так: не обязательно одна бизнесс-транзакция == новый объект, реализующий UoW :)
...
Рейтинг: 0 / 0
45 сообщений из 45, показаны все 2 страниц
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF + Repository + DI
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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