Oracle
 sql >> Database >  >> RDS >> Oracle

Confronto dei provider compatibili con Entity Framework per Oracle?

Ho eseguito un rapido confronto tra i diversi provider costituiti da:

  1. Esperienza di installazione.
  2. Connettività.
  3. Esperienza di Esplora server.
  4. Aggiornamento dall'esperienza del database (prima il database).
  5. Mappatura dei tipi di dati (prima il database).

Ecco le conclusioni:

1. Esperienza di installazione.

Oracle's ODP.NET (beta 3):installazione complessa di versioni x86 e x64 separate, programmi di installazione non progettati per Windows. Riempie il percorso di sistema (pericolosamente vicino alla lunghezza massima), non si installa nelle cartelle standard (file di programma + dati app).

DotConnect di Devart:installazione semplice, la DLL del provider è completamente gestita.

Progresso di DataDirect:installazione semplice, la DLL del provider è completamente gestita.

OPENLINK:Sembra richiedere l'installazione lato server, non ho eseguito ulteriori test.

2. Connettività.

ODP.NET di Oracle (beta 3):complicato da configurare, richiede l'installazione di Oracle sul computer client e un file TSN aggiuntivo nell'installazione di Oracle o una stringa di connessione lunga e complessa simile a LISP/Scheme.
Aggiorna: Non è stato possibile trovarlo nella documentazione, tuttavia, la stringa di connessione può contenere anche una semplice definizione dell'origine dati, ad es. nomeserver:porta/nomeservizio.

DotConnect di Devart:stringa di connessione semplice + procedura guidata.

Avanzamento di DataDirect:stringa di connessione semplice + procedura guidata.

3. Esperienza di Esplora server.

ODP.NET di Oracle (beta 3):il più potente dei tre, consente una facile modifica, visualizzazione di chiavi e indici.

DotConnect di Devart:visualizzazione di tabelle e campi.

Avanzamento di DataDirect:consente una facile modifica, visualizzazione di chiavi e indici.

4. Aggiornamento dall'esperienza del database (prima il database).

ODP.NET di Oracle (beta 3):semplice.

DotConnect di Devart:mostra le tabelle di tutti gli schemi, nessuna opzione per filtrare - rende estenuante trovare le tabelle.

Avanzamento di DataDirect:diretto.

5. Mappature dei tipi di dati (prima il database).

Oracle's ODP.NET (beta 3):la mappatura predefinita per numero(1,0), numero(2,0) e numero(3,0) è errata*. Può eseguire l'override manuale per numero(2,0) e numero(3 ,0). La correzione per number(1,0) non funziona (almeno non sulla beta 3 - potrebbe aver funzionato nella beta 2).

Aggiornamento: Ora che è stata rilasciata la versione di rilascio (112030), il problema è stato risolto. Alcune mappature sono possibili tramite la sezione nel file app.config.

DotConnect di Devart:mostra le tabelle di tutti gli schemi, nessuna opzione per filtrare - rende estenuante la ricerca delle tabelle. Mappatura predefinita per float binario, doppio binario, timestamp con fuso orario, numero(2,0), numero(3,0) e numero(4 ,0) sono sbagliati*. L'override manuale dovrebbe funzionare - non verificato.

Avanzamento di DataDirect:le mappature predefinite sono OK*.

(*) Mappature che mi aspettavo:

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

Se vuoi che il tipo di database sia in grado di memorizzare qualsiasi numero nell'intervallo di tipi .NET, IntX richiede un numero (N,0) dove Ceil(log10(2^X)) =N per l'archiviazione**.

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)

** Il calcolo presuppone numeri senza segno, per numeri con segno ceil(log(2^(X-1)).

Riferimenti per ipotesi sui tipi di dati:
TECH in rete
Devart
Oracle