1

Wie würde ein Skeleton-Design für ein Repository aussehen, das mehrere Datenbank-Layer mit ASP.NET MVC und C# unterstützt? Ich möchte sehen, wie ein Design aussehen würde, wenn ich sowohl LINQ to SQL als auch NHibernate unterstütze. Wie würde ich mein Datenbankobjekt erstellen und eine Methode in meiner BLL-Ebene aufrufen?Wie würde ich ein Repository für mehrere Datenzugriffsstrategien entwickeln?

+0

Ich hoffe, Sie Kreditierung SO für das Design und die Software zu schreiben. – Welbog

+0

@Welbog: Solange er meine Beratungsrate bezahlt, ist es mir egal, ob er mir gutgeschrieben wird oder nicht. – Pesto

Antwort

8

Die repository pattern ist wahrscheinlich die beste Lösung dafür. Sie würden für jedes Repository eine Schnittstelle definieren und dann konkrete Repositories für Linq2Sql- und NHibernate-Implementierungen erstellen, z.

public interface ICustomerRepository 
{ 
    Customer GetCustomer(int id); 
} 

public class NhibCustomerRepository : ICustomerRepository 
{ 
    public Customer GetCustomer(int id) 
    { 
     // NHibernate implementation 
    } 
} 

public class LtsCustomerRepository : ICustomerRepository 
{ 
    public Customer GetCustomer(int id) 
    { 
     // Linq2Sql implementation 
    } 
} 

A Dependency Injection-Framework, wie Ninject, macht es einfach, zwischen Implementierungen dynamisch zu wechseln. Sie müssen möglicherweise eine zusätzliche Injektion von Abhängigkeiten mit NHibernate durchführen, um die aktuelle ISession in Ihre Repositorys zu übertragen, damit sie an derselben Arbeitseinheit teilnehmen.

Verwandte Themen