Estoy creando un marco WPF/MVVM que genera el código para las clases modelo.¿Cuáles son las mejores características de un marco de capa de datos para aplicaciones WPF/MVVM?
tengo la intención de tener para cada base de datos de la tabla/servicio web (por ejemplo, "Clientes") dos clases modelo:
- una clase del modelo singular (por ejemplo, "Cliente")
- y una clase de modelo plural (por ejemplo, "clientes")
El singular clase de modelo tiene todas sus propiedades (nombre, apellido, etc.), además de toda ella métodos que tiene sentido para una SINGULA por ejemplo, p. Save(), Delete(), CalculateSalary(), etc.
La clase de modelo plural tiene una colección de objetos de modelo singular, más los mismos métodos ya que también desearía realizar en un grupo de objetos singulares, p.ej Save(), Delete(), CalculateSalary(), pero también métodos particulares como Sort(), y métodos que lo hicieron muy fácil para ciertos grupos, p. LoadAllGoldCustomers(), o incluso LoadWithSql (sql string), etc.
que he hecho un marco como éste antes (PHP) y resultó ser muy fácil de entender y escribir código como este:
Customers customers = new Customers("all");
customers.CalculateSalary();
Un par de clases heredadas (elementos y elementos) sacaron la mayor parte del código de las clases individuales y plurales individuales para cada tabla de base de datos, lo que hizo un entorno muy limpio para programar.
Sin embargo, rara vez he visto otro las aplicaciones hacen esto división de clase de modelo singular/plural. En cambio, casi siempre hay una sola clase para cada tabla de base de datos, p. Customer
y esta clase tiene cualquier método plural necesario, p. GetCustomers (sql string), etc.
acabo de notar en el WPF Model-View-ViewModel Toolkit 0.1 tutorial, tienen que hacer dos modelos de sus "modelos" de directorio dos clases:
- Customer.cs (sólo campos)
- (método de una lista Load()) CustomersDataSource.cs
Qué parece ser un concepto similar, sólo que la clase "plural" se llama un origen de datos.
Así que ahora estoy a punto de hacer otro marco basado en WPF/MVVM y puedo decidir cómo quiero estructurar las clases de modelo. Quiero que el marco sea:
- clara y fácil de programar en contra del modelo de vista, de ahí la clara separación de las clases del modelo singular y plural, que sólo debe tener para crear instancias de una clase singular o plural y llamar a un método en él y usted tiene sus datos.
- encaja muy bien con el patrón MVVM (que entiendo medios para mantener lo más simple posible, sólo tienen propiedades y métodos que el modelo de vista puede llamar, pero la aplicación no presenta ninguna-WPF específicos tales como INotifyProperityChanged)
- quieren mi capa de datos al se encuentra sobre cualquier fuente de datos, así que si uso LINQ-to-SQL, igual llamo a mis propias clases de modelo, y si quiero cambiar a guardar en Oracle, escribo una capa de adaptador de datos más baja para mis clases interactuar con eso.
- toma ventaja de LINQ de la mejor manera posible
Me gustaría recibir sus comentarios como los que se han desarrollado datalayers para marcos especialmente utilizando WPF/MVVM/Composite Application Library y qué características se encontró que funcionó mejor, o si ha trabajado con otros marcos tales como CSLA, Subsónico, etc. También, cualquier experiencia o ideas sobre cómo LINQ cambia/simplifica la construcción de una estructura de capa de datos. Gracias.
+1 porque ha señalado que los métodos de persistencia no funcionan bien dentro del objeto y que PI (persistencia ignorante) PONOs (objetos de red antiguos simples, (también POCO, simples objetos CLR antiguos)) pueden utilizarse en su lugar. – tobsen