Pregunta

Desarrollé un producto empresarial que actualmente está disponible en algunos sitios. Esto se desarrolló en la pila MS utilizando el servidor SQL como almacenamiento de datos de fondo. No he usado EF / NHibernate para el acceso a datos, en cambio usé dapper y algunas extensiones personalizadas en torno al mismo. Esto nos ha funcionado, ya que la mayoría de las consultas que tenemos son agregados y filtros complejos en varias tablas. Tener SQL personalizado reduce en gran medida nuestro esfuerzo para identificar los cuellos de botella y solucionarlo más rápido.

Ahora, debido a algunas razones comerciales, debemos admitir Oracle para un cliente importante (no había manera de que pudiéramos hacer que usaran SQL, ya que son una tienda completa de Oracle).

Asumiendo que necesito cambiar muchos tipos de datos para asegurar la coherencia entre las bases de datos, sería útil si puedo obtener algunas direcciones sobre el enfoque general

  1. ¿Cuál es la mejor forma de abordar para que pueda admitir consultas en ambas fuentes de datos?

    • Método 1: intente mover la mayoría de las consultas a SQL ANSI y solo tenga consultas separadas para algunas consultas especializadas

    • Método 2: use la combinación de EF y Dapper. EF se usará para operaciones más simples y Dapper se usará para operaciones de lectura pesadas. Siempre que se use dapper nuevamente, es posible que necesite consultas separadas para oráculo y sql.

    • Método 3: Continuar utilizando Dapper y tener consultas separadas para todas las operaciones

2) Tengo dacpac para la automatización de implementación de bases de datos. ¿Cómo logro lo mismo para Oracle?

Además de estos, ¿hay otros elementos que debo tener en cuenta al admitir ambas bases de datos, como el manejo de la fecha y la hora, etc.?

Respuesta aceptada

A medida que empiezas a desarrollar usando EF, y tienes clase POCO para todas tus tablas, prefiero el enfoque 3.

Por lo tanto, cree un entorno Oracle con Dapper (utilizando su POCO generado con Ms SQL Server).

Puede construir su DAL como un patrón de repositorio, unidad de trabajo

Documento a medida que avanza, el tipo de datos no coincide entre el servidor oracle / sql y toma las correcciones necesarias para unificar DAL.

Con la prueba de unidad para su DAL que debe pasar en Oracle / SQL Server, está a salvo.

Edit2:

Como tiene un sistema que funciona con SQL Server y minimiza el tiempo de desarrollo, estudie la solución de la Alternativa 4 :) "Uso de EntityFramework con la base de datos Oracle". Echar un vistazo :

¿Puedes usar Microsoft Entity Framework con Oracle?

http://download.oracle.com/oll/obe/EntityFrameworkOBE/EntityFrameworkOBE.htm

puede hacer POC (prueba de concepto) para esa solución.

https://www.nuget.org/packages/Oracle.ManagedDataAccess.EntityFramework/

Install-Package Oracle.ManagedDataAccess.EntityFramework

Pasos de migración a la base de datos de Oracle:

Utilice Oracle Migration Workbench para migrar la base de datos de MS SQL Server a la base de datos Oracle

Para más detalles:

http://www.oracle.com/technetwork/topics/o57sql-100253.html

La herramienta le permite migrar todos los objetos, incluidos los objetos de esquema, tablas, desencadenantes y procedimientos almacenados, y gestionar la conversión de tipos de datos. Para estar al tanto de la asignación entre el tipo de datos, lea:

https://www.mssqltips.com/sqlservertip/2944/comparing-sql-server-and-oracle-datatypes/

Un movimiento rápido de la aplicación Para trabajar con la base de datos Oracle

Después de migrar la base de datos, y usa Dapper, modifique la cadena de conexión y comience a probar su aplicación, encuentre todos los errores (no depure uno por uno) a todos los efectos secundarios de los cambios.

Espero un cambio muy pequeño en la aplicación (si no funciona como está).

Planificar para el cambio.

Puede Mover todo DAL con dapper en proyecto compartido (si está trabajando usando vs 2013/2015), a la que puede hacer referencia tanto su aplicación actual con el Servidor Sql como la nueva aplicación con Oracle Database.

Su DAL en ese caso incluye solo la clase de conexión con la cadena de conexión y el proyecto compartido.

Prueba unitaria para Oracle / Sql Server

1) crear proyectos compartidos que incluyen todas las pruebas comunes para Oracle y MS sqL server.

2) Crear un proyecto de prueba de unidad para ms servidor Sql, referenciar el proyecto compartido, definir la cadena de conexión, agregar otras pruebas (en caso de existir alguna diferencia en la implementación).

3) Crear un proyecto de prueba unitaria para Oracle, como lo hacemos en el paso 2

4) Ejecute ambas pruebas y asegúrese de pasar todas las pruebas. Para cualquier cambio, vuelva a ejecutar las pruebas.


Respuesta popular

Si tiene pruebas para su capa de acceso a los datos, me decantaría por el enfoque 1.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué