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