Es mejor crear el Modelo de clases o un palo con el genérico de la base de datos de utilidad de la clase?

StackOverflow https://stackoverflow.com/questions/2778

Pregunta

Tenemos una sencilla utilidad de la clase en la casa de nuestro base de datos de llamadas (un poquito de contenedor ADO.NET), pero estoy pensando en crear clases para cada base de datos/objeto.Sería cosa inteligente a hacer así, o es solamente el beneficio de si estamos usando la plena MVC framework para ASP.NET?

Así que tenemos este:

SQLWrapper.GetRecordset(connstr-alias, sql-statement, parameters);
SQLWrapper.GetDataset(connstr-alias, sql-statement, parameters);
SQLWrapper.Execute(connstr-alias, sql-statement, parameters);

Pensando en hacer esto:

Person p = Person.get(id);
p.fname = "jon";
p.lname = "smith";
p.Save();

o un nuevo récord -

Person p = new Person();
p.fname = "Jon";
p.lname = "Smith";
p.Save();
p.Delete();

Sería inteligente, o es una exageración?Puedo ver el beneficio para la reutilización, el cambio de base de datos, y de mantenimiento y/o mejorar la legibilidad.

¿Fue útil?

Solución

Esta pregunta es cargado, impulsado por los datos de diseño vs dominio impulsado por el diseño.Para cualquier aplicación que tiene una buena cantidad de comportamiento, luego de dominio impulsado por el diseño debe ser preferido.La presentación de informes, o de la utilidad de las aplicaciones tienden a funcionar mejor (o son más rápidos para desarrollar) con los datos impulsado por el diseño.

Lo que estamos pidiendo es "debe mi empresa hacer un cambio fundamental en la forma en que el diseño de nuestro código".Como un dominio-freak, mi reacción instintiva es gritar .Sin embargo, por la simple naturaleza de tu pregunta, no estoy seguro de que usted comprender plenamente el alcance del cambio que se propone.Creo que se debería hablar más de su equipo sobre ella.

Obtener algo de literatura, tales como Evan DDD libro, o el fundaciones libres ebook, y , a continuación, usted estará en una mejor posición para juzgar la dirección a la que debe ir.

Otros consejos

No es MVC el único patrón de diseño para la web, pero es una de las más útiles.

La adopción sólo la 'M' se pagan los dividendos, en mi opinión, incluso si usted no puede/no adoptar la forma de 'V' o 'C'.

El enfoque de discutir se considera una buena por muchos folk, entre los que me incluyo!El aprendizaje de este enfoque requerirá un poco de esfuerzo, pero no dejes que eso te desanime!

¿Qué acerca tratando de un pequeño proyecto con LINQ to SQL?Quizás encontrar un bonito proyecto de referencia en google code, y el estudio de cómo otros han trabajado con él.

Es una herramienta sencilla, y te permitirá familiarizarse con algunas de las cuestiones que surgen con el mapeo de objetos a bases de datos.

Usted será capaz de tener una idea de ella, y decidir si vale la pena la curva de aprendizaje.

Habrá nuevos conceptos para comprender y experimentar con cosas como:

  • Unidad de Trabajo:Cuando se ejecuta Guardar y Eliminar, etc, un ORM tiende a no hacerlo de inmediato, mientras que un conjunto de registros basado DAL voluntad.Esto puede ser sorprendente, entonces usted necesita para aprender un poco acerca de eso.Leer sobre el Modelo de unidad de Trabajo para obtener una comprensión de este.
  • Las Operaciones Masivas es un problema con la O/M.Un lector de datos de manera eficiente puede iterar a través de miles de filas, pero con un ORM tienes que tener cuidado cuando se trabaja con grandes cantidades de objetos.De nuevo, uno que leer.
  • Asociaciones parecen grandes cuando se pueden hacer cosas como customer.Orders.Count pero también son la causa de muchos problemas.Usted tendrá que encontrar algunas de las prácticas de seguridad a seguir cuando se trabaja con asociaciones.

...para nombrar unos pocos.

Para empezar, no se preocupe acerca de la herencia y esas cosas, acaba de iniciar simple y sencillo, las entidades que se asignan a las tablas.

Pruebe a utilizar en la misma forma que había ya DAL.A continuación, empezar a experimentar con las asociaciones.

Entonces, tal vez trate de poner más el comportamiento en sus entidades.Si usted comienza a gusto de esto, y siente que necesita más funciones, considere la posibilidad de probar una de las características más ricos ORM como Lightspeed o NHibernate.

Espero que esto ayude!

A mí me parece que están tratando de hacer lo LINQ ya puede hacer por usted.Si usted está atascado en un antiguo marco en el que usted no puede usar eso, yo podría sugerir que el uso Subconic (http://subsonicproject.com/) en lugar de tener que crear manualmente todos estos modelos de objetos con la mano.

Yo tenía un proyecto en el que yo estaba en una situación similar y se cambió a subsónico a mitad de camino a través de con resultados fantásticos.Un desarrollo más rápido y MUCHO más fácil de leer/código de uso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top