Recientemente comencé un nuevo proyecto de formularios web y decidí separar las clases de negocios de cualquier referencia de DBML. Mis clases de capas de negocios en cambio acceden a métodos discretos de capa de datos y son colecciones devueltas de DTO. Por lo que la capa de datos podría proyectar DTO como la siguiente:Preocupaciones de separación con Linq To SQL y DTO
(from c in dataContext.Customers
where c.Active == true
select new DTO.Customer
{
CustomerID = c.CustomerID,
Name = c.CustomerName,
...
}).ToList()
Aunque la construcción de los objetos DTO añade el trabajo, esto se siente como una mejor aproximación a una unión estrecha entre el negocio & capas de datos y significa que puedo probar la capa de negocios sin una base de datos presente.
Mi pregunta es, ¿esta es una buena práctica ?, ¿hay alguna forma de generar los DTO (tal vez a través de SQLMetal) y qué otros problemas podría tener a medida que avanza el proyecto?
He publicado algunos enlaces sobre mapeo XML externo aquí: http://stackoverflow.com/questions/988872/linq-to-sql-external-mapping/1136039#1136039 – alexandrul