Como alguien que acaba de cambiar de LINQ to SQL a (Fluido) NHibernate, he aquí algunas cosas que he notado.
LINQ a SQL tomó tanto tiempo para encontrar la manera de hacer el equivalente de un join-subclase. Después de muchas modificaciones, leí en algún lado que no es posible. Solo puede asignar herencia si TODAS las columnas están en esa misma tabla. Esto es genial si hay algunas columnas, pero hay toneladas en mi caso y las subclases son padres de otras sub clases, y así sucesivamente. ¿Por qué debería ponerlos todos en una sola tabla por el bien de mi ORM?
NHibernate de la experiencia ha sido robusto (a veces demasiado para pequeños proyectos rápidos) y aunque familiarizado con él a través de proyectos pequeños, sentí que podría ser demasiado y fui la ruta de LINQ - SQL ya que podría generar un archivo DBML y listo dentro de minutos.
Fluido NHibernate. Toma lo mejor de ambos mundos (en mi caso). Puedo mapear de la manera que quiero y tener mi base de datos de la manera que quiero y no tener que comprometer mi dominio o mis modelos de datos. También una palabra: Automapping ... icing on the cake.
habría tenido que ir con otro ORM Una vez que encontré limitaciones y golpear algunas baches en la carretera con LINQ a SQL, pero Fluido NHibernate hecho esta elección fácil, y no creo que voy déjalo a menos que ocurra algo que haga el trabajo aún mejor.
Entonces, como dijo Rob Scott, la pregunta es ¿cómo estás abstrayendo tu dominio => modelo de datos? ¿Y comienzas con un dominio o una base de datos? ¿Cuán complejas son las relaciones? Si tienes algo de herencia, diría que solo vas con un marco de ORM más rico y te ahorres el dolor.
Fluido NHibernate tiene la mejor documentación que he encontrado y hay mucho apoyo, notas, blogs y recursos. Odio a mí mismo hacer cualquier cosa menos ... ¡OMI! Estaba funcionando en menos de 24 horas.
Ah, y si eres nuevo en NHibernate, elige el libro NHibernate in Action para ayudar a engrasar las ruedas, aunque también hay mucha ayuda para ese marco.
La mejor indicación de que una herramienta no funciona es cuando tienes que TRABAJAR con la herramienta ... LINQ a SQL Estaba personalizando, leyendo documentos, todo tipo de locura y se negó a generar consultas apropiadas, justo cuando tuve la tentación de modificar mi mesa y mi dominio, dije: déjeme darle un giro a Fluido, y estoy feliz de haberlo hecho.
Buena suerte para ti ... Perdón por la larga respuesta; esto ha sido todo en los últimos cinco o más días, así que creo que todavía estoy atrapado :-)
También hay 3 subsónicos con plantillas de mvc. –
¿No devuelve un objeto IQueryable que Linq-to-SQL sea una API fluida? – Nick