Действительно возможно объединить UoW, Repository и «классический» ADO.NET.
Однако вашему UoW нужно будет добраться до соответствующего репозитория на основе типа сущности.Вы можете сделать так, чтобы ваши репозитории реализовали общий интерфейс.Например:
public interface IRepository<T>
{
void Add(T instance);
T Get(Guid id);
void Remove(Guid id);
void Remove(T instance);
}
Поскольку каждое UoW является отдельным экземпляром, вам нужно использовать фабрику.Затем эта фабрика либо внедрит репозитории в UoW, либо предоставит ему некоторый экземпляр IRepositoryProvider
, который может вернуть соответствующий репозиторий в зависимости от типа.Концептуально:
public interface IRepositoryProvider
{
IRepository<T> Get<T>();
}
Это очень широких штрихов, поэтому я надеюсь, что это имеет смысл.