Pregunta

Una simple consulta LINQ to SQL puede devolver un objeto producto. Obviamente, tenemos que podía pasar este objeto a mi capa de negocio, a continuación, leer y actualizar los datos, directamente contra dicho objeto.

he visto un montón de implementaciones en las que después de la ejecución de la consulta LINQ se asigna el objeto resultante (a través de AutoMapper o manualmente) para un objeto comercial personalizado. Así, en el caso del producto en el que podría tener el objeto LINQ:

Producto.IDProducto y Product.ProductName

y luego Yo definiría un objeto de negocio personalizada del producto así:

class BusineszProduct
{
    string ProductId;
    string ProductName;
}

y un código de mapeo simple como:

BusinessProduct myProduct = new BusinessProduct (); myProduct.ProductId = Producto.IDProducto; myProduct.ProductName = product.ProductName;

y luego pasar myProduct alrededor de mi capa de negocio, modificarlo, leerlo y así sucesivamente, a continuación, actualizar más adelante el objeto de LINQ.

En qué escenarios iba a querer crear la clase BusinessProduct personalizada?

¿Fue útil?

Solución

En mi humilde opinión, la razón general es disociar / disentangle sus entidades comerciales de los equipajes Linq2SQL ORM que viene con Entidades Linq2Sql

Sin embargo, en un escenario extremo, puede tener varias asignaciones:

  • Linq2Sql entidades de la capa de "Data Access" - sin embargo estos están fuertemente acopladas a la L2S DataContext
  • POCOs / entidades comerciales serían utilizadas para la aplicación de reglas de negocio, validación, etc.
  • Si está utilizando Servicios Web o WCF, también podría representar los datos como por ejemplo Mensaje Entidades si tiene que presentar las entidades en un formato muy específico cuando se serializan a través del cable
  • Y por último, si usted tiene una arquitectura MVC / MVP / MVVM interfaz de usuario, es posible que desee entidades adaptadas para sus puntos de vista

Otros consejos

En mi solicitud, hago una consulta LINQ que une seis mesas diferentes, y proporciona un par de columnas de cada uno. No hay ningún tipo de objeto de tabla específica similar al programado de la información. De ahí que se crea una clase de negocios personalizada para controlar el conjunto de registros.

Se puede ver usted mismo (en http://www.njtheater.org )

SELECT de la tabla Productions por fecha. Se une a la mesa de juego (donde consigo el título y descripción), la tabla Troupes (donde consigo el nombre de la compañía de teatro), la tabla Lugares (donde consigo el nombre de teatro y ciudad). Reproduce la mesa se une a la mesa PlayCredits que une la tabla Personas (donde consigo los nombres de los dramaturgos)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top