Realicé una comparación rápida de los diferentes proveedores que consta de:
- Experiencia de instalación.
- Conectividad.
- Experiencia del Explorador de servidores.
- Actualización desde la experiencia de la base de datos (primero la base de datos).
- Asignaciones de tipos de datos (base de datos primero).
Estas son las conclusiones:
1. Experiencia en instalación.
ODP.NET de Oracle (beta 3):Instalación compleja de versiones separadas x86 y x64, instaladores no diseñados para Windows. Rellena la ruta del sistema (peligrosamente cerca de la longitud máxima), no se instala en carpetas estándar (archivos de programa + datos de aplicación).
DotConnect de Devart:instalación suave, la DLL del proveedor está completamente administrada.
Progreso de DataDirect:instalación fluida, la DLL del proveedor está completamente administrada.
OPENLINK:Parece requerir instalación del lado del servidor, no probé más.
2. Conectividad.
ODP.NET de Oracle (beta 3):complicado de configurar, requiere la instalación de Oracle en la máquina cliente y un archivo TSN adicional en la instalación de Oracle o una cadena de conexión larga y compleja que se parece a LISP/Scheme.
Actualización: No pude encontrar esto en la documentación, sin embargo, la cadena de conexión también puede contener una definición de fuente de datos simple, p. nombreServidor:puerto/nombreServicio.
DotConnect de Devart:cadena de conexión simple + asistente.
Progreso de DataDirect:cadena de conexión simple + asistente.
3. Experiencia del Explorador de servidores.
ODP.NET de Oracle (beta 3):el más poderoso de los tres, permite una fácil edición, visualización de claves e índices.
DotConnect de Devart:Visualización de tablas y campos.
Progreso de DataDirect:permite una fácil edición, visualización de claves e índices.
4. Actualización desde la experiencia de la base de datos (primero la base de datos).
ODP.NET de Oracle (beta 3):Sencillo.
DotConnect de Devart:muestra tablas de todos los esquemas, sin opción para filtrar; hace que encontrar tablas sea agotador.
Progreso de DataDirect:Sencillo.
5. Asignaciones de tipos de datos (primero la base de datos).
ODP.NET de Oracle (beta 3):la asignación predeterminada para número (1,0), número (2,0) y número (3,0) es incorrecta*. Se puede anular manualmente para número (2,0) y número (3) ,0). La corrección del número (1,0) no funciona (al menos no en la versión beta 3; puede haber funcionado en la versión beta 2).
Actualizar: Ahora que salió la versión de lanzamiento (112030), esto se solucionó. Algunas asignaciones son posibles a través de la sección en el archivo app.config.
DotConnect de Devart:muestra tablas de todos los esquemas, sin opción para filtrar; hace que encontrar tablas sea agotador. Asignación predeterminada para flotante binario, doble binario, marca de tiempo con zona horaria, número (2,0), número (3,0) y número (4) ,0) están mal*. La anulación manual debería funcionar; no se verificó.
Progreso de DataDirect:las asignaciones predeterminadas están bien*.
(*) Asignaciones que esperaba:
DB Data Type .NET Data Type
integer Decimal
int Decimal
smallint Decimal
long String
decimal Decimal
rowid String
float Decimal
double Decimal
binary float Single
binary double Double
char[40] String
charvar[40] String
natchar[40] String
natcharvar[40] String
natcharacter[40] String
natcharactervar[40] String
number Decimal
numeric Decimal
nvarchar2[40] String
real Decimal
date DateTime
timestamp DateTime
timestamplocal DateTime
timestampzone DateTimeOffset
xml String
raw15 Binary
raw16 Guid
raw17 Int64
number(1,0) Boolean
number(2,0) Byte or SByte
number(3,0) Byte or SByte (accepted Int16 as OK too)
number(4,0) Int16
number(5,0) Int16 (accepted Int32 as OK too)
number(6,0) Int32
number(7,0) Int32
number(8,0) Int32
number(9,0) Int32
number(10,0) Int32 (accepted Int64 as OK too)
number(11,0) Int64
number(15,0) Int64
number(16,0) Int64
number(17,0) Int64
number(18,0) Int64
number(19,0) Int64 (accepted Decimal as OK too)
number(20,0) Decimal (would accept Int64 as OK too)
number(21+,0) Decimal
Si desea que el tipo de base de datos pueda almacenar cualquier número en el rango de tipo .NET, entonces IntX requiere un número (N,0) donde Ceil(log10(2^X)) =N para el almacenamiento**.
Bool (Int1) ==> number(1,0)
Byte (Int8) ==> number(3,0)
Int16, UInt16 ==> number(5,0)
Int32, UInt32 ==> number(10,0)
Int64 ==> number(19,0)
UInt64 ==> number(20,0)
** El cálculo asume números sin signo, para números con signo ceil(log(2^(X-1)).
Referencias para supuestos de tipos de datos:
TECH on the Net
Devart
Oracle