Рекомендации по совместной работе с NHibernate и /или веб-сервисом
-
11-09-2019 - |
Вопрос
Я ищу несколько советов по следующему поводу.
Мне нужно создать DAL, который был бы взаимозаменяем между базой данных и веб-сервисом.Я разрабатываю на C # и WPF.
кто-нибудь видел какие-нибудь хорошие реализации IUnitOfWork и позволял переключать разные DAL с помощью какого-нибудь DI?
Редактировать
Итак, после некоторого чтения.Я решил использовать шаблон репозитория.Шаблон Повторения включает в себя единицу работы.Выше указано обратное.Также вот пример того, что я имею в виду под включением или выключением переключателя.
NHibernateProductRepository : IRepository<Product>
{
private IUnitOfWork _unitOfWork = null;
public NHibernateProductRepository(IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
}
}
WebServiceProductRepository : IRepository<Product>
{
private IUnitOfWork _unitOfWork = null;
public WebServiceProductRepository (IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
}
}
....
public static class Bootstrapper
{
public static void Load()
{
// Some sort of IOC.. Which will also be used for DI.
}
}
Так что, я думаю, мне нужна помощь с материалами IUnitOfWork.С репозиториями веб-сервисов будет непросто.Итак, как мне создать какую-то транзакцию, и как мне поставить ее в очередь и т.д. И т.п.
И последнее, в среде WPF несколько потоков могут сохранять данные в базу данных, поэтому для каждого потока он должен создавать свой собственный UnitOfWork?Я боюсь, что поток может зафиксироваться на полпути через другой и т.д.
Решение
Вам следует проверить Четкая архитектура если вы используете NHibernate.В проекте contrib описан ваш сценарий.