2012-01-17 13 views
7

Actualmente tenemos 2 bases de datos que vamos a utilizar. Uno proviene de un producto preexistente y, por lo tanto, no tenemos control sobre él. el otro es sobre el que tenemos control total.Pasar de Entity Framework a NHibernate

Actualmente utilizamos EF4 CTP, ya que necesitamos características espaciales, pero obviamente esto no se puede utilizar en el código de producto y la versión reciente de EF no es espacial ya que es para una versión posterior de .Net Framework y la decisión se está haciendo en cuanto al camino a seguir y una sugerencia es pasar a NHibernate y utilizar el complemento espacial.

Así que la primera pregunta es sobre la curva de aprendizaje y moverse entre las herramientas. A mis ojos parece que NHibernate es más visible en lo que está haciendo, EF oculta mucho de lo que hace en el estilo típico de MS, ¿sería justo?

Así que estoy pensando que el camino a seguir es usar un diagrama de clases para describir la base de datos de la que tenemos control. Luego creamos las lecciones POCO a partir de eso y luego necesita crear archivos de mapeo. ¿Es realmente tan directo como eso? Estos archivos de mapeo, ¿tenemos que escribirlos manualmente o tenemos una herramienta para crear a partir de las clases de POCO?

La siguiente pregunta es sobre la base de datos preexistente y lo que hacemos aquí. EF hace que sea fácil importar la base de datos y crear las clases, ¿y es tan directo en NHibernate?

En caso de que afecta a las respuestas

La base de datos que tenemos el control de utiliza una base de datos MS SQL. El que no tenemos es Oracle y utilizamos el código ODAC Entity Framework de Oracle.

Muchas gracias

Respuesta

3

Para una base de datos existente, recomiendo el uso de Fluent NHibernate para el mapeo. Hay un buen ejemplo de esto en el proyecto Sharp Architecture

Hay que hacer ambas cosas tools generación POCO y Cartografía Fluido, no he probado ninguno de ellos, pero he leído sobre ellos.

+4

Recomendaría usar NHibernate v3.2 porque tiene incorporado el soporte para crear las asignaciones en el código. A menos que sepa que necesita alguna característica que solo tenga Fluent NHibernate. Recientemente me mudé de Fluiber NHibernate a NHibernate simple y, aunque la sintaxis de mapeo no es tan buena y falta documentación, no veo ningún problema en utilizarla en lugar de Fluidez NHibernate. –

+0

Genial, no sabía que NHibernate tenía eso ahora. –