He jugado con algunas implementaciones diferentes de Model-View-ViewModel y encuentro constantemente una situación en la que no estoy seguro de la forma correcta de proceder. Sé que uno de los objetivos de MVVM es desacoplar la vista de la lógica de la aplicación para que la lógica se pueda probar sin la presencia de una vista. Poner la lógica en un ViewModel que no tiene dependencias en la View resuelve este problema. Estupendo. Aún mejor si el Modelo se puede desacoplar del ViewModel de tal manera que se pueda burlar.EF4 + MVVM - ¿Exponer entidades en ViewModel?
Así que mi pregunta es, ¿debería el ViewModel desacoplar el Modelo de la Vista? En otras palabras, ¿está "bien" exponer entidades EntityFramework a la Vista a través del ViewModel? Por ejemplo, supongamos que hay un cuadro combinado en la vista donde el usuario puede elegir un estado para una dirección. En el modelo AddressView, ¿el estado debería estar expuesto como una propiedad de tipo entidad real, o debería estar expuesto como un modelo StateViewModel? Si debe ser una propiedad de tipo StateviewModel-typed, no entiendo cómo debe gestionarse el modelo subyacente dentro del setter AddressViewModel.State (porque lo que se establece en la propiedad es un StateViewModel y no una entidad State).
Me parece que esto podría ir de cualquier manera, pero parece más coherente que nunca exponer el modelo directamente a la vista. ¿Pensamientos?
Eso es cierto en teoría, pero en la práctica a veces las cosas no son tan constantes como a las personas (los desarrolladores entre ellos) les gustaría pensar, por ejemplo, la lista de estados podría expandirse en el futuro para incluir otros países, etc. .. –
Ese no es el tipo de cambio que tendría un impacto en esta decisión. Agregar nuevos estados a la lista no crea el requisito de que sus propiedades sean editables en la interfaz de usuario. –