Creación y modificación de tablas en .Net (Tiempo de Ejecución)
Buenas Tardes Experto
Resulta que he desarrollado una librería que me permite conectar mi aplicación a cualquier base de datos que exista en el mercado. Todo anda de mil maravillas desde hace ya mas de dos años; el crecimiento en funciones ha sido exponencial y hoy en día me siento orgulloso de decir que es la mejor librería de desarrollo que se ha podido crear, pues aseguro que se ahorra un 40% de código en la creación de un proyecto.
Pero basta de airar las virtudes y pasemos a las contras. La librería esta desarrollada para que los programadores no se preocupen por muchas cuestiones en el desarrollo de un nuevo proyecto de .Net, especialmente para lo que concierne a base de datos. No usa un lenguaje SQL especifico de cada motor, si no que usa un lenguaje propio de SQL.
El problema radica que en algunas ocasiones el programador necesita crear una tabla temporal, agregar un campo o cambiar el tipo de datos del mismo y a la hora de hacerlo decide usar el lenguaje SQL del motor puesto que yo no le proporciono funciones para hacerlo desde mi propio lenguaje SQL. Para poner un ejemplo el siguiente código me agrega un campo nuevo a la tabla vVentas (Voy a usar Oracle y SQLSrv).
Oracle: <em style="line-height: 1.5em;">ALTER TABLE vVentas ADD campo VARCHAR2(20);
<strong style="line-height: 1.5em;">SQL Svr: <em style="line-height: 1.5em;">ALTER TABLE vVentas ADD campo VARCHAR(20);
Como puede observar es una muy pequeña diferencia y esto ocasiona error cuando por ejemplo se hace para Oracle y el programa se conecta a SQLSvr.
¿Tiene algún conocimiento de como puedo crear tablas y campos de forma que no importe el motor y no hayan diferencias para el uso de los campos?
Como punto de análisis, he investigado por ejemplo los DataSets tipados, estos se crean en tiempo de diseño y no importa el motor luego son usados por el programa sin problemas... Se puede empezar por ahí, diseñando un dataset tipado que se creen ahí las tablas temporales y luego recorrerlas y ejecutarlas en el motor (algo mas o menos así es lo que pienso, pero no se como usarlo).
Gracias por la atención y espero que alguien pueda ayudarme.