Últimamente he estado investigando los ORM basados en .NET que están disponibles. Me di cuenta de que cada uno termina en uno o dos campamentos. En un campo, la base de datos se crea primero, y el ORM proporciona una manera más fácil de acceder a la base de datos en una aplicación. En el segundo campo, el modelo de objetos existe primero y el ORM facilita la persistencia del modelo de objetos en una base de datos.ORM Comparación: ¿Cuál es la base de datos o las clases primero?
Ahora no estoy preguntando o afirmando si un campamento es mejor que el otro. Ciertamente puedo ver razones para cada metodología de diseño. Lo que me frustra es que de todos los tutoriales y documentos de "inicio" que he leído últimamente, ninguno acaba de aparecer y decir desde el principio "esta herramienta supone que está comenzando con un modelo de base de datos/objeto existente". Para mí, esto es bastante fundamental para saber si usarías un ORM versus otro.
Así que después de hacer un montón de lecturas, y crear un par de proyectos "Hello World", he creado una serie de viñetas sobre los flujos de trabajo compatibles con los ORM que he estudiado. ¿Alguien con experiencia con estas herramientas me puede decir si he hecho declaraciones incorrectas o si me he perdido por completo algún punto realmente importante? Específicamente, me gustaría saber si mis suposiciones sobre si el esquema de la base de datos o el modelo de objetos deberían ser lo primero con cada herramienta son correctos.
- base de datos debe existir primero
- sólo funciona con SQL Server
- DataContext clase se utiliza para leer/escribir entre las clases y la base de datos
- DataContext pueden retun clases físicos reales, o los tipos dinámicos se pueden usar para crear automáticamente tipos basados en el esquema de la base de datos.
- Asignación por defecto de mapeo nombres de tabla a nombres de clases y nombres de propiedad a los nombres de columna
- Mapping se puede personalizar mediante atributos incrustados en cada clase
- base de datos debe ser creado primero
- Funciona con una serie de tecnologías de base de datos
- Las clases se generan automáticamente a partir del esquema de base de datos existente utilizando plantillas T4
- de conexión a la base de datos es totalmente transparente una vez que las clases se generan
- constructores de clase llamada automagicaly crear registros en la base de datos
- Cambiando los valores de propiedad actualiza automaticamente la base de datos.
- La estructura de clases debe ser lo primero
- trabaja con una serie de tecnologías de bases de datos se crea
- clase repositorio y conectado a una base de datos
- esquema de base de datos se crea y actualiza automáticamente cuando se agregan clases a el repositorio
repo.Add<MyClass>(instance);
- repositorio utiliza la reflexión para crear/actualizar el esquema de base de datos
- Crear una tabla para cada tiempo, y una columna para cada propiedad
- base de datos Uno o estructura de clases se pueden crear primero
- mapeo puede ser creado para que coincida con una nueva estructura de clases a una base de datos existente
- Mapping se puede utilizar para automáticamente generate the database schema
- trabaja con un número de las tecnologías de base de datos
- Las clases dentro del ensamblaje final se atribuyen a las configuraciones de asignación NHibernate que asignan clases y propiedades a tablas y columnas
- Hay dos métodos para agregar mapp ing configuración
- archivos XML Embebido en el binario,
<classname>.hbm.xml
- atributos añadidos al código
- archivos XML Embebido en el binario,
- admite la configuración avanzada de mapas incluyendo uno a uno, uno a mayo, muchos a uno, muchos a muchos, herencia etc..l etc ...
¿Qué hay de ADO.NET Entity Framework? –
Olvidó Entity Framework. Con EF, puede hacer DB primero o primero desarrollo de clase. Usted trabaja con la base de datos a través de EntitySet. También tiene la capacidad de trabajar con múltiples bases de datos usando Entity Framework. –
Simplemente no he tenido tiempo de investigar EF. Por lo que leí, la versión 3.5 de EF no estaba realmente lista. Suena como el 4.La versión 0 tiene mejoras, pero acabo de instalar VS 2010 al final de la semana pasada. Definitivamente me gustaría escuchar cualquier respuesta que compare cómo el flujo de trabajo con EF se compara con los otros ORMS enumerados. –