I Linq2Sql für meine DAL Schicht, und ich habe es als ein separates Projekt bin mit. In meinem Domain-Projekt habe ich eine Repository-Schnittstelle, die ich dann mit einem eigenen Linq2SqlCarRepository in meinem DAL-Projekt implementiere, diese Klasse wickelt die generierten Linq2Sql-Klassen auf.
z. In Car.Core Projekt
public interface ICarRepository
{
IQueryable<Car> GetAllCars();
void Add(Car);
}
Ich habe dann eine Implementierung der Schnittstelle, die den Zugriff auf die erzeugte Linq2Sql Klasse einpackt.
Car.Data Projekt
public class SqlCarRepository : ICarRepository
{
private CarDataContext _context;
public SqlCarRepository()
{
_context = new CarDataContext();
}
#region ICarRepository Members
public IQueryable<Car> GetAllCars()
{
return _context.Cars;
}
Ich habe dann ein Testprojekt Car.Data.Test die dann Mocks verwendet die ICarRepository und Tests weg zu verspotten. Ich denke, das ist etwas anders als das, was Sie beschreiben. Aber ich denke, du willst versuchen, DAL von deiner Anwendung zu trennen, damit es ein Peripheriegerät ist, das du austauschen kannst, wenn du willst.
Ich habe keine ganze vollständig sortiert, aber ich habe gerade diese Projekte:
Car.Core --- All the interfaces and domain objects, DTO's etc
Car.Core.Tests --- The tests of the core business logic.
Car.Web --- Asp.net MVC frontend
Car.Web.Tests --- Tests for the website
Car.Data --- The Linq2Sql stuff lives in here
Car.Data.Tests --- The tests for the DAL layer
Das ist, was ich zur Zeit habe, obwohl es nicht der beste Weg, die Dinge könnten jetzt zu tun.
Ich würde empfehlen, The Onion Architecture zu lesen und die MVC StoreFront Videos für Inspiration betrachten; Viel Glück.
Ich lese die "Wenn ich eine Datenschicht Projekt erstellen würde ich alle meine Repos zu diesem Projekt auch verschieben?" Frage wie Sie bereits verwenden das Repository-Muster in den Antworten vorgeschlagen, aber offenbar müssen Sie auch eine Art von Datenbankzugriff, in einigen Ihrer Tests zu tun? Normalerweise würde dies bedeuten, dass Sie Linq zu SQL testen, was ich von Microsofts Ingenieuren bereits erwartet hätte.Ich würde Ihnen empfehlen, diese Methoden zu vermeiden und Ihre Repositories mit einem Speicherkontext-Backend zu testen, wie in dem Artikel beschrieben, auf den Jason Jones verweist. – AHM