와 나는 별도의 프로젝트로 있습니다. 내 도메인 프로젝트에서 내 DAL 프로젝트에서 사용자 지정 Linq2SqlCarRepository를 사용하여 구현하는 리포지토리 인터페이스가 있으며이 클래스는 생성 된 Linq2Sql 클래스를 래핑합니다.
예 : Car.Core 프로젝트
public interface ICarRepository
{
IQueryable<Car> GetAllCars();
void Add(Car);
}
에서 난 후 생성 된 Linq2Sql 클래스에 대한 액세스를 감싸는 인터페이스의 구현이있다.
Car.Data 프로젝트
public class SqlCarRepository : ICarRepository
{
private CarDataContext _context;
public SqlCarRepository()
{
_context = new CarDataContext();
}
#region ICarRepository Members
public IQueryable<Car> GetAllCars()
{
return _context.Cars;
}
그때 그때 멀리 ICarRepository 및 테스트를 조롱 모의 객체를 사용하는 테스트 프로젝트 Car.Data.Test 있습니다. 나는 이것이 당신이 묘사하고있는 것과 약간 다른 것이라고 생각합니다. 하지만 당신이 응용 프로그램에서 DAL을 사용하려고 노력하고 싶다고 생각합니다. 원한다면 바꿀 수있는 주변 장치입니다.
내가 가진되지 않은 모든 완전히 분류하지만 현재이 프로젝트가 :
지금 일을하는 가장 좋은 방법은되지 않을 수도 있지만 나는 현재하고있어 무엇
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
.
나는 The Onion Architecture을 통해 읽고 영감을 얻기 위해 MVC StoreFront 개의 동영상을보고 싶습니다. 행운을 빕니다.
"데이터 레이어 프로젝트를 만들면 프로젝트에 내 레포를 모두 옮길 수 있습니까?" 당신이 이미 아래 답변에 제안 된 저장소 패턴을 사용하고 있지만, 분명히 당신은 또한 어떤 종류의 데이터베이스 접근을해야합니까? 일반적으로 이것은 Linq to SQL을 테스트하고 있음을 의미합니다. Microsoft 엔지니어가 이미 수행 한 것으로 기대합니다.이러한 메소드를 피하고 메모리 콘텍스트 백엔드를 사용하여 리포지토리를 테스트 할 것을 조언합니다. 제이슨 존스 (Jason Jones) 링크에 설명되어 있습니다. – AHM