Pregunta

Muchos desarrolladores de productos quieren escribir una aplicación .NET que funcionará sin problemas con cualquier RDBMS populares como servidor SQL, Oracle, DB2, MySQL. Si utilizamos el bloque de aplicación de datos que recoge de forma dinámica el conductor de base de datos (OracleClient, SQLClient o OleDBClient) dependiendo de la configuración.

Sin embargo, todas las bases de datos tienen sus propios sabores de SQL. Hay diferencias sutiles que impiden una base de código SQL para ser utilizado universalmente - los nombres de las funciones son diferentes, la forma en que se manejan las fechas son diferentes, las columnas de identidad manejados manera son diferentes y así sucesivamente

.

Se podría utilizar un producto de terceros a partir de datos directa para escribir código DB neutro utilizando secuencias de escape predefinidas.

¿Hay herramientas o productos de Microsoft que se ocupa de este problema?

¿Fue útil?

Solución

El Microsoft ADO.NET Entity Framework es un Object-Relational Mapping marco de Microsoft que está diseñado para que pueda escribir código que es (un poco) DB-agnóstico. Todos los principales DBMS admiten el marco de la entidad, aunque para muchos (por ejemplo MySQL, PostgreSQL) tendrá que descargar algo separado de su instalación de .NET Framework.

Nota: todavía tengo que trabajar en un solo proyecto de gran tamaño utilizando una herramienta de O / RM en la que no era por lo menos un caso en el que tuvimos que pagar para SQL-- nativa, ya sea para la funcionalidad DB-específico o para un rendimiento razones (necesarios para escribir una consulta de una manera particular para obtener un buen plan de consulta). Pero un buen O / RM puede trabajar la mayor parte del tiempo para evitar tener que escribir SQL.

Dicho esto, la versión actual del marco de la entidad es bastante limitado en un número de otros marcos dimensions-- / lm o como NHibernate , SubSonic , etc son mucho más madura, donde "madura "significa soportar un rango más profundo de las características del DBMS sin tener que pagar a SQL nativo, apoyo de la comunidad más amplia, mejor rendimiento, etc.

Esta es mi manera educada de decir que, para un mundo real, proyecto relativamente complejo, no creo que la versión actual del marco de la entidad es el mejor camino a seguir en relación con las otras herramientas O / RM disponibles .

Al parecer, la próxima .NET 4.0 / VS2010 versión del Entity Framework Microsoft ha mejorado mucho, por lo que la afirmación anterior no puede ser cierto el próximo año. El nuevo marco de la entidad añade soporte para DDL, por ejemplo, por lo que puede crear tablas e índices de una manera independiente de DBMS. Además, el .NET 4.0 Entity Framework está aprovechando una característica interesante llamada T4 plantillas , que es una característica interesante para generar automáticamente código en tiempo de compilación, lo cual es importante para cosas como envoltorios O / RM, que deben mantenerse en sincronía con un schema-- DB exterior y que deben producir un mejor rendimiento (también conocido como pre-compilado) que hacer herramientas O / RM que no conozcan los tipos de columnas de la base hasta el tiempo de ejecución.

Otros consejos

Como he entendido que busca herramienta para escribir SQL RDBMS-independientes, pero no un ORM. Este es un problema muy real resuelto por diferentes proveedores de ORM de diferentes maneras. Yo sólo puedo mencionar Xtensive SQL DOM herramienta, que fue desarrollado por su ORM - DataObjects.Net . Es una abstracción sobre SQL que permite escribir consultas utilizando modelo completo DOM. En este momento SQL DOM no se promueve por separado de DataObjects.Net, pero es un producto de código abierto y que seguramente puede pedir a sus autores al respecto. Por lo que yo sé que es utilizado con éxito en algunos proyectos de terceros.

No directamente desde Microsoft. Esas herramientas son comúnmente denominados objeto-relacionales mapeadores ORM o corto. NHibernate, por ejemplo, es un ORM común y ampliamente utilizado que es muy seguro para adaptarse a sus necesidades. Por supuesto que hay otros productos comerciales como Telerik OpenAccess ORM, DevExpress XPO o RemObjects DataAbstract que ayudarán a ser la base de datos agnóstico.

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