(Estoy usando ASP.Net MVC, pero esta parece ser una pregunta MVC más genérica)En Asp.net MVC, ¿es aconsejable que viewmodels se derive de modelos de dominio?
Supongamos que tiene un modelo de dominio que representa a una persona y tiene una vista para editar a una persona. El objeto de dominio Person incluye una propiedad de estado de residencia y en la vista desea un menú desplegable que enumere los estados.
¿Hay alguna razón para no crear un modelo de vista que se derive del modelo de dominio y que simplemente incluya propiedades para la pizca de interfaz de usuario que la vista requiere? Si es así, ¿por qué no querría hacer esto?
TIA
"el modelo de dominio introduciría el acoplamiento que MVC estaba destinado a evitar" Esta afirmación no es verdadera en absoluto. Implementaciones de Django/RoR en las que los modelos de vista son en realidad representaciones estrechamente acopladas del esquema de la base de datos. MVC no hace una opinión sobre cuál debería ser su modelo, solo que no es parte de su V y C. – jfar
De Wikipedia: Muchas aplicaciones usan un mecanismo de almacenamiento persistente como una base de datos para almacenar datos. MVC no menciona específicamente la capa de acceso a datos porque se entiende que está debajo o encapsulada por el modelo. Los modelos no son objetos de acceso a datos; Sin embargo, en aplicaciones muy simples que tienen poca lógica de dominio, no hay una distinción real que hacer. Active Record es un patrón de diseño aceptado que combina la lógica de dominio y el código de acceso a datos, un modelo que sabe cómo persistir. – jfar
@jfar: Su punto está bien; sin embargo, muchos de los ejemplos de MVC usan Linq-to-SQL o Linq-to-Entities o DataSets * como * el modelo de dominio. Todos estos modelos tienen al menos algún acoplamiento al mecanismo de almacenamiento persistente, y se usan como modelos (con frecuencia suficiente) en la práctica. – kbrimington