Tôi đang sử dụng Linq2Sql cho lớp DAL và tôi có nó như một dự án riêng biệt. Trong dự án miền của tôi, tôi có một giao diện kho lưu trữ mà sau đó tôi thực hiện bằng cách sử dụng một Linq2SqlCarRepository tùy chỉnh trong dự án DAL của tôi, lớp này kết thúc tốt đẹp các lớp Linq2Sql được tạo ra.
ví dụ: Trong dự án Car.Core
public interface ICarRepository
{
IQueryable<Car> GetAllCars();
void Add(Car);
}
sau đó tôi có một thực hiện của giao diện mà kết thúc tốt đẹp truy cập vào các lớp Linq2Sql tạo ra.
dự án Car.Data
public class SqlCarRepository : ICarRepository
{
private CarDataContext _context;
public SqlCarRepository()
{
_context = new CarDataContext();
}
#region ICarRepository Members
public IQueryable<Car> GetAllCars()
{
return _context.Cars;
}
sau đó tôi có một dự án thử nghiệm Car.Data.Test mà sau đó sử dụng mocks để chế nhạo các ICarRepository và kiểm tra đi. Tôi nghĩ điều này hơi khác với những gì bạn mô tả. Nhưng tôi nghĩ bạn muốn thử và tách riêng DAL khỏi ứng dụng của bạn để nó là một thiết bị ngoại vi có thể được hoán đổi nếu bạn muốn.
tôi đã không có tất cả các hoàn toàn sắp xếp nhưng tôi hiện đang có các dự án:
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
Đó là những gì tôi đã hiện có mặc dù nó có thể không phải là cách tốt nhất để làm điều bây giờ.
Tôi khuyên bạn nên đọc qua số The Onion Architecture và xem các video MVC StoreFront để lấy cảm hứng; chúc may mắn.
Tôi đọc "Nếu tôi tạo dự án lớp dữ liệu, tôi có thể di chuyển tất cả repo của mình vào dự án đó không?" câu hỏi như bạn đã sử dụng mẫu kho lưu trữ được đề xuất trong các câu trả lời dưới đây, nhưng dường như bạn cũng phải thực hiện một số loại truy cập cơ sở dữ liệu, trong một số thử nghiệm của bạn? Thông thường điều này có nghĩa là bạn đang thực sự kiểm tra LINQ to SQL, điều mà tôi mong đợi các kỹ sư của Microsofts đã làm.Tôi sẽ khuyên bạn nên tránh những phương pháp đó và kiểm tra các kho lưu trữ của bạn với phần phụ trợ bộ nhớ, như được mô tả trong bài viết Jason Jones liên kết đến. – AHM