Gần đây tôi đã bắt đầu dự án biểu mẫu web mới và quyết định tách riêng các lớp kinh doanh khỏi bất kỳ tham chiếu DBML nào. Lớp lớp kinh doanh của tôi thay vì truy cập các phương thức lớp dữ liệu rời rạc và được trả về các bộ sưu tập của DTO. Vì vậy, các lớp dữ liệu có thể dự DTO của như sau:Tách mối quan tâm với LINQ To SQL và DTO's
(from c in dataContext.Customers
where c.Active == true
select new DTO.Customer
{
CustomerID = c.CustomerID,
Name = c.CustomerName,
...
}).ToList()
Mặc dù việc xây dựng các đối tượng DTO thêm công việc, điều này cảm thấy như một cách tiếp cận tốt hơn để một chặt chẽ ràng buộc giữa kinh doanh & lớp dữ liệu và có nghĩa là tôi có thể kiểm tra các lớp kinh doanh mà không cần một cơ sở dữ liệu đang có mặt.
Câu hỏi của tôi là thực hành tốt này ?, Có cách nào tạo ra DTO (có thể thông qua SQLMetal) hay không và tôi có thể tấn công những vấn đề nào khác khi dự án diễn ra.
Tôi đã đăng một số liên kết về ánh xạ XML bên ngoài tại đây: http://stackoverflow.com/questions/988872/linq-to-sql-external-mapping/1136039#1136039 – alexandrul