2009-09-30 15 views
9

Preguntas rápidas realmente.ASP.NET MVC - LINQ a Entidades modelo como el modelo de vista - es esta buena práctica?

Actualmente estoy construyendo un sitio utilizando asp.net MVC y el marco de la entidad. Tengo un par de repositorios en el lugar que devuelven entidades o listas de entidades. Estoy descubriendo que en la mayoría de mis páginas tengo que extraer datos de una variedad de tablas relacionadas. Esto está bien siempre que cargue las entidades relacionadas usando 'incluir' en mis consultas, pero ¿es esta una buena práctica?

¿Sería mejor crear un objeto de viewmodel personalizado que contenga solo los bits de información que necesito, o no hay nada "incorrecto" en dibujar un gráfico de objetos que es quizás de 5 a 6 tablas para mostrar lo que necesita a su punto de vista?

Disculpas si esta pregunta no tiene demasiado sentido. Puede que tenga fundamentalmente mal entendido cómo un modelo se debe utilizar aquí :)

Gracias

+0

Buena pregunta, estará interesado en escuchar la respuesta. – Paddy

+0

1, que tenía una pregunta similar sobre el uso de dtos en lugar de modelos entidad: http://stackoverflow.com/questions/1450209/is-my-asp-net-mvc-application-structured-properly – Brandon

+0

Gracias Brandon - acaba de leer su publicación y sí, parece que estamos preocupados por cosas similares. A veces me preocupa que haya pasado demasiado tiempo preocupándome por las mejores prácticas :) – Sergio

Respuesta

2

Yo sugeriría revisar el código de representación en sus puntos de vista y el código de contabilización en los controladores. ¿Se vuelven demasiado complejos por el enfoque que estás tomando? Si no, probablemente estés bien para mantener las cosas como están. Si la vista y el código del controlador se simplificaran enormemente al introducir un modelo de vista personalizado, entonces considere crear uno. Los modelos de vista personalizada esencialmente resumen algo de esa complejidad que probablemente se esté manejando en algún otro lado en este momento.

+0

Tiene sentido. Básicamente, actualmente tengo una situación en la que estoy sacando varias 'tablas' de mi modelo de entidad. Organizations-> Buildings-> Rooms-> Assets. Cuando visualizo los detalles de un activo, también necesito mostrar su sala y la información de construcción. Por el momento estoy agarrando un gráfico de objetos de gran tamaño y tirando de lo que necesito en la vista. Me preocupaba que trajera demasiado de la modelo. Pero ... funciona. – Sergio

3

Si sus puntos de vista empiezan a hacer cosas como

<% foreach (var order in Model.Orders.Any(x => x.Products.Any(p => p.Category == "xx")) %>

entonces definitivamente necesita modelo de vista. Usted puede ir con

ViewData["flattened_orders"]

si lo prefiere cadenas mágicas, pero dudo de modo.

Luego, hay una cuestión de atributos de presentación necesarios en sus entidades, luego debe exponer todas las propiedades en ellos para que el encuadernador de modelos pueda funcionar ... entonces necesita información adicional solo de presentación como lista de países ...

por lo tanto, para aplicaciones sencillas, puede omitir modelo de vista. Pero para aplicaciones simples puede hacer Response.Write y SQL manual, de todos modos ;-)

Me gusta this publicación sobre un problema similar. El enfoque representado allí puede parecer demasiado "académico" al principio, pero es de proyectos reales, y cuanto más hago ASP.NET MVC, más me gusta y me acerco a él.

+0

gracias, eso es un buen consejo.Estoy descubriendo que tengo que navegar a través de las relaciones de una entidad numérica para obtener lo que necesito y estoy empezando a pensar que cuanto más planos sean los datos, mejor. – Sergio

Cuestiones relacionadas