2009-12-03 28 views
16

Estoy utilizando Entity Framework ahora y constantemente teniendo que escribir sql en línea porque Entity Framework no admite la búsqueda de texto completo y otras características. ¿Existe un ORM que tenga muchas características que soportan consultas avanzadas? Siento que si a veces voy a escribir sql en línea, podría hacerlo todo en sql en línea. Cualquier ayuda aquí¿Cuáles son algunas buenas alternativas de Entity Framework?

+2

Solo mis dos centavos, pero si quiere consultas avanzadas, simplemente puede volcar la idea de ORM y usar sql en línea, y vigilar la separación entre el código de la capa de persistencia y la lógica de negocios (lo que no significa tener objetos que representan tablas en su base de datos, pero objetos que representan un intento que a su vez lee y escribe de forma transparente en la base de datos detrás de la cortina). Similar al registro activo, pero más cercano al intento. – Frunsi

+6

Las opiniones de Luke101 aquí son interesantes: http://stackoverflow.com/questions/1691575/what-orm-for-net-should-i-use/1691790#1691790 –

+0

Acabo de hablar demasiado pronto .. – Luke101

Respuesta

4

Tome un vistazo a:

+0

Se olvidó de agregar: aún no hay búsqueda de texto completo. Pero esto está en camino, ver p. http://forum.x-tensive.com/viewtopic.php?f=29&t=5657 para algunos detalles. –

+0

DataObjects.Net tiene una implementación LINQ muy pobre y funciona MUY lentamente. Recomiendo encarecidamente utilizar NHibernate como una comparación directa: hace todo lo que hace DO.Net y lo hace todo mejor. – nathanchere

+0

Eso está mal: basta con mirar las funciones compatibles para ver la diferencia. Entonces me gustaría escuchar una prueba de esto; por el contrario, puedo demostrar fácilmente que LINQ en NH no admite _lots_ de características compatibles con DO y otras herramientas ORM (ver, por ejemplo, tests @ ORMBattle.NET); lo mismo sobre el rendimiento. –

11

NHibernate es una de las alternativas O/M más grandes y de código abierto que me gusta. Puede hacer algunas cosas bastante "avanzadas" pero tiene una curva de aprendizaje empinada.

+3

El soporte de LINQ es, bueno, uno de los peores. –

1

adscripción lo que decían los otros, NHibernate. Además encontré this link re: búsqueda de texto completo y nHibernate.

3

Puede consultar LLBLGen Pro o Telerik's OpenAccess, pero NHibernate va a ser la solución con la comunidad más grande a su alrededor.

+0

¿LLBLGen Pro tiene buen rendimiento? – Luke101

+0

LLBLGen Pro es uno de los ORM más rápidos que existen: https://github.com/FransBouma/RawDataAccessBencher –

8

Siento que si voy a veces escribir SQL en línea que también podría hacer todo esto en SQL en línea

En serio? Al usar cualquier ORM, siempre va a llegar a situaciones en las que es mejor, más limpio o más eficiente usar SQL o llamar a un proceso almacenado. No deberías simplemente confiar ciegamente en hacer absolutamente todo por ti en todas las situaciones.

+5

"Si tengo que escribir este procedimiento en ensamblaje para un rendimiento realmente bueno, también podría escribir el resto de mi aplicación en ensamblaje también ... " – Svish

+0

Para el caso, es demasiado complicado hacerlo en ORM, intente seleccionar sentencias con 20 tablas y subconsultas. A veces es más simple en sql. – PeteT

4

La mayoría de los ORM seguirán requiriendo algunos SQL en línea de vez en cuando. NHibernate, Linq 2 Sql, etc. no son compatibles con la búsqueda de texto completo de fábrica (NHibernate tiene NHibernate.Search que utiliza Lucene.NET para realizar búsquedas de texto completo, Linq 2 Sql tiene acceso a procedimientos almacenados que puede crear y utilizar búsqueda de texto completo).

Esto no significa que deba eliminar el uso de un ORM en conjunto. Hay un ton de código de plomería repetitivo que los ORM pueden evitar que escriba y los casos de uso general son relativamente fáciles de ejecutar (por ejemplo, operaciones CRUD) con cualquier ORM.

2

Al igual que la mayoría de las personas aquí, yo recomendaría NHibernate, pero es posible que desee considerar su uso junto con la implementación CastleProject's ActiveRecord. NHibernate en sí mismo puede tomar un tiempo para acostumbrarse, pero cuando aplica ActiveRecord encima, las cosas se vuelven mucho más fáciles. Pude hacer una conversión EntityFramework-> NHibernate/ActiveRecord muy rápido.

+0

¿Hay libros o realmente buenos tutoriales sobre nhibernate/activeRecored? Además, ¿cree que la vida útil del registro activo será alta? Estoy esperando apoyo para al menos 10 años. Gracias – Luke101

+0

Lamentablemente, no es realmente, que es una especie de dolor, pero también una especie de problema. Es muy fácil hacer la mayoría de la integración de db con Active Record/NHibernate, y los tutoriales de Castle en línea te ofrecen todo lo que necesitas saber. Si falta el sitio del Castillo, una búsqueda rápida de Google/Bing hará que encuentres a mucha gente por ahí blogueando sobre cosas que han descubierto cómo hacerlo. En cuanto a cuánto tiempo durará. Es de código abierto, por lo que no tiene que preocuparse porque "se vaya", simplemente tome la fuente y compílela usted mismo, entonces siempre la tendrá. –

3

Soy fan de SubSonic por Rob Conery. Es (era) simple y fácil de configurar y usar.

+0

El sitio está muerto y redirige al spam. – frankhommers

+0

establece el enlace al repositorio git. – JonSG

5

Mindscape LightSpeed es un asignador o/r para.NET que supports full text search (a través de Lucene pero extensible para que pueda agregar el suyo).

También es compatible con LINQ, tiene una Visual Studio integrated designer con plena esquema de ida y vuelta de forma que pueda trabajar modelo de primera o de base de datos en primer lugar - lo que le apetezca :-)

También hay una versión gratuita que puede utilizar para decidir si es adecuado para usted.

Espero que ayude.

5

Puede que mire CodeFluent Entities, pero debe comprender que no se basa internamente en ninguna herramienta de ORM o de un tercero.

Entity Framework es un ORM mientras que CodeFluent Entities es una fábrica completa de software . Utiliza un enfoque de modelado natural y visual (como Entity Framework e integrado en Visual Studio) y puede generar scripts de base de datos, código de capa de datos orientada a objetos (C#, VB), servicios web e incluso componentes de UI.

Cuestiones relacionadas