2012-05-13 44 views
5

Hola Estoy tratando de aprender MVVM, y no estoy seguro acerca de algunas partes, principalmente la parte donde el modelo (de datos) necesita comunicarse con la VM (ViewModel).Modelo con base de datos en MVVM

Así que obtuve una persona de clase, tiene muchas propiedades (con propiedad Raise (INotifyPropertyChanged)). Ahora, ¿cómo puedo conectar esa clase a una VM? Haré una nueva clase y la llamaré ViewModelPerson, pero principalmente quiero una lista de Personas, ya que mostrar solo 1 persona es un poco inútil, la lista se recopilará desde una Base de Datos (SQLite) con Dapper. Ahora, ¿dónde necesito crear una lista observable, en el modelo de vista o en un modelo (de datos)? Creo que en ViewModel, ya que tengo que vincular eso con la Vista, pero ¿dónde inserto la información de la base de datos en ViewModel ObservableCollection? ¿Lo pongo en el constructor como ViewModelPersonsList Constructor que tiene una consulta para reunir a todas las personas de un DB SQlite e insertarlo en la lista?

Espero que comprenda dónde estoy fallando en entender el modelo MVVM, si algo no está claro por favor solo pregunte, y trataré de explicar mejor mi pregunta.

Maxim

+0

¿Te ayudó mi respuesta? –

Respuesta

1

Ver -> Vista de modelo -> lógica de negocios -> Capa de datos -> DB

O

Ver -> Vista de modelo -> Servicio WCF/Web -> lógica de negocios - > Capa de datos -> DB

Si su modelo de vista necesita una lista de objetos Person, entonces debe llamar a su capa de lógica de negocios, y su BLL implementará la lógica necesaria para llamar a la capa de datos. Su BLL devuelve la lista y su VM la pone a disposición de la vista a través del enlace.

Actualizando Los objetos personales funcionan de la misma manera. La VM simplemente llama al BLL con los objetos actualizados.

1

Como veo que mencionas Sqlite, supongo que hablas de pequeños proyectos de WPF.

Le sugiero que haga un modelo de entidad de código de entidad mapeado en su base de datos (lea this).

Si desea utilizar SQL Server Compact Edition, puede incluso tener la base de datos generated for you (esto también se puede lograr con Sqlite pero con más esfuerzo).

De todos modos, a continuación, utiliza el DbContext generado (o codificado) como un objeto UoW.

Puede elegir manejar sus datos por separado a través de un DAL o directamente desde el ViewModel.

En cualquier caso, yo diría crear dos clases base de ViewModel, una que expone un TEntity, y la otra que expone una colección de TEntity. Si elige realizar las acciones DAL en su VM, puede agregar métodos CRUD en su CollectionViewModel base y llamarlos manualmente o dejar que el usuario lo llame al exponer comandos.

Cuestiones relacionadas