Conseils sur UnitOfWork avec NHibernate et / ou service Web
-
11-09-2019 - |
Question
Je cherche quelques conseils pour ce qui suit.
Je dois créer un DAL qui est interchangeable entre une base de données et un webservice. Je développe en C # et WPF.
a quelqu'un voit de bonnes implémentations d'un IUnitOfWork et permet différentes DAL d'être ou commutateur à l'aide d'une sorte de DI?
EDIT
Alors après avoir fait un peu de lecture. J'ai décidé d'utiliser un modèle référentiel. Le modèle Rep prend dans un IUnitOfWork. lit au-dessus du sens inverse autour. En outre un exemple ici pour ce que je veux dire avec l'interrupteur ou arrière.
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.
}
}
Je suppose que je dois aider les choses IUnitOfWork. Les Référentiels de service Web va être difficile. Alors, comment puis-je créer une sorte de transaction, et comment la file d'attente, etc etc
Une dernière chose, dans un environnement WPF plusieurs threads pourraient être sauver les choses à la base de données, pour chaque thread devrait-il créer son propre UnitOfWork? J'ai peur un fil pourrait engager à mi-chemin par un autre etc.
La solution
Vous devriez consulter SharpArchitecture si vous allez avec NHibernate. Le projet a contrib votre scénario couvert.