Советы по UnitOfWork с NHibernate и / или веб-сервисом - PullRequest
0 голосов
/ 03 декабря 2009

Я ищу несколько советов для следующего.

Мне нужно создать DAL, который будет взаимозаменяемым между базой данных и веб-сервисом. Я занимаюсь разработкой на C # и WPF.

Кто-нибудь видел какие-либо хорошие реализации IUnitOfWork и позволяет включать или выключать различные DAL с помощью какого-либо DI?

РЕДАКТИРОВАТЬ

Итак, после прочтения. Я решил использовать шаблон репозитория. Шаблон Rep принимает IUnitOfWork. Выше читается наоборот. Также вот пример того, что я имею в виду с включением или выключением.

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? Я боюсь, что одна нить может завершиться на полпути через другую и т. Д.

1 Ответ

1 голос
/ 03 декабря 2009

Вы должны проверить SharpArchitecture , если вы используете NHibernate. В проекте contrib ваш сценарий рассмотрен.

...