2011-03-16 3 views
0

Je fais de mon mieux pour obtenir une sorte de UnitOfWork contre le stockage de données dans datacontext. Sans trop d'explications je voudrais permettre d'exécuter deux requêtes au sein de même en utilisant.Aider à améliorer UnitOfWork-Interface

Prenez,

using (IDataUnitOfWork uow = new Data.SomeContext.Core()) 
{ 
    CustomerRepo repo = new CustomerRepo(uow); 
    Data.Entities.Customer c = repo.GetCustomerById(191); 
    ... 
    c.name = c.name.Replace("_", ""); 
    //c.name = c.name + "_"; 
    //uow.Save(); 
} 

Ce que je ressens sont une façon très claire et strightforward pour accomplir une tâche. Maintenant, cependant, j'ai aussi un autre contexte. Dans certaines circonstances, cette tâche doit également être exécutée dans un second contexte.

using (IDataUnitOfWork uow = new Provider.TheProviderContext()) 
{ 
    CustomerRepo repo = new CustomerRepo(uow); 
    Data.Entities.Customer c = repo.GetCustomerById(191); 
    ... 
    c.name = c.name.Replace("_", ""); 
    //c.name = c.name + "_"; 
    //uow.Save(); 
} 

Ce contexte ne sont pas basées sur la même technique, mais je pense que l'exemple ci-dessus reflète ce que je vais essayer de le faire (et besoin). A ce moment, je ne vois que cette façon de le résoudre ,,

using (IDataUnitOfWork uow = new Data.SomeContext.Core()) 
{ 
    ... 
    if (anything == true) 
    using (IDataUnitOfWork uow = new Provider.TheProviderContext()) 
    { 
     ... 
    } 
} 

Ce qui ressemble à une façon agréable et claire pour travailler (BCZ toutes les informations déjà connues du second « en utilisant ». me corrigera si je « m complètement faux ici, parce que je n'ai que cela sur la planification encore. Mais ce serait encore mieux si je pouvais appeler

using (IDataUnitOfWork uow = new BothProviders()) 

..which appelle à son tour Both fournisseurs et a couru les tâches simultanées à chacun d'eux J'ai lu des articles sur les usines, mais c'est un peu confus (encore) Mes compétences se terminent définitivement aujourd'hui, malheureusement ...

+0

duplication possible de http://stackoverflow.com/questions/5171779/dépendance-injection – k3b

+0

dépend de ce que vous voulez réaliser. Gardez à l'esprit que cette unité de travail rend toute l'opération atomique. Si vous souhaitez unifier les fournisseurs, prenez en compte le modèle d'adaptateur – Robert

+0

Robert, http://en.wikipedia.org/wiki/Adapter_pattern Merci pour le commentaire. Je lirai ceci (et plus). Il peut être une réponse à ce sujet, – Independent

Répondre

1

dépend de ce que vous voulez réaliser. Gardez à l'esprit que cette unité de travail rend toute l'opération atomique. Si vous souhaitez unifier les fournisseurs, envisagez le modèle d'adaptateur

le modèle d'adaptateur convient lorsque vous souhaitez prendre en charge plusieurs interfaces différentes au même niveau d'abstraction, comme dans votre cas deux UnitOfWork qui, je suppose, vont faire différentes choses.