sql >> Databasteknik >  >> RDS >> Oracle

Jämförelse av Entity Framework-kompatibla leverantörer för Oracle?

Jag gjorde en snabb jämförelse av de olika leverantörerna bestående av:

  1. Installationserfarenhet.
  2. Anslutning.
  3. Server Explorer-upplevelse.
  4. Uppdaterar från databasupplevelsen (databas först).
  5. Datatypmappningar (databas först).

Här är slutsatserna:

1. Installationserfarenhet.

Oracles ODP.NET (beta 3):Komplex installation av separata x86- och x64-versioner, installationsprogram som inte är designade för Windows.Fills systemsökväg (farligt nära maxlängden), installeras inte i standardmappar (programfiler + appdata).

Devarts DotConnect:Smidig installation, leverantörs-DLL hanteras helt.

DataDirects framsteg:Smidig installation, leverantörens DLL hanteras helt.

OPENLINK:Verkar kräva installation på serversidan, testade inte vidare.

2. Anslutning.

Oracles ODP.NET (beta 3):Komplicerat att konfigurera, kräver Oracle-installation på klientdatorn och antingen ytterligare TSN-fil i Oracle-installationen eller en lång och komplex anslutningssträng som ser ut som LISP/Scheme.
Uppdatering: Kunde inte hitta detta i dokumentationen, dock kan anslutningssträng även innehålla enkel datakälla definition t.ex. servernamn:port/tjänstnamn.

Devarts DotConnect:Enkel anslutningssträng + guide.

DataDirects framsteg:Enkel anslutningssträng + guide.

3. Server Explorer-upplevelse.

Oracles ODP.NET (beta 3):Den kraftfullaste av de tre, möjliggör enkel redigering, visning av nycklar och index.

Devart's DotConnect:Visning av tabeller och fält.

DataDirects framsteg:Möjliggör enkel redigering, visning av nycklar och index.

4. Uppdaterar från databasupplevelse (databas först).

Oracles ODP.NET (beta 3):Enkelt.

Devarts DotConnect:Visar tabeller från alla scheman, inget alternativ att filtrera - gör det ansträngande att hitta tabeller.

DataDirects framsteg:Enkel.

5. Datatypmappningar (databas först).

Oracles ODP.NET (beta 3):Standardmappning för nummer(1,0), nummer(2,0) och nummer(3,0) är fel*. Kan manuellt åsidosätta för nummer(2,0) och nummer(3) ,0). Att fixa för nummer(1,0) fungerar inte (åtminstone inte på beta 3 - kan ha fungerat i beta 2).

Uppdatering: Nu när releaseversionen är ute (112030) har detta åtgärdats. Vissa mappningar är möjliga via avsnitt i app.config-filen.

Devarts DotConnect:Visar tabeller från alla scheman, inget alternativ att filtrera - gör det ansträngande att hitta tabeller. Standardmappning för binär flyt, binär dubbel, tidsstämpel med tidszon, nummer(2,0), nummer(3,0) och nummer(4) ,0) är fel*. Manuell överstyrning borde fungera - kontrollerade inte.

DataDirects framsteg:Standardmappningar är OK*.

(*) Mappningar jag förväntade mig:

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

Om du vill att databastypen ska kunna lagra vilket nummer som helst i .NET-typintervallet kräver IntX ett nummer(N,0) där Ceil(log10(2^X)) =N för lagring**.

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)

** Beräkningen förutsätter osignerade tal, för tecken med tecken ceil(log(2^(X-1)).

Referenser för antaganden om datatyp:
TECH on the Net
Devart
Oracle



  1. 10 Kortkommandon för Microsoft Access-navigeringsfönstret

  2. Fix "Kan inte installera i Homebrew på ARM-processor i Intels standardprefix (/usr/local)!"

  3. Identifiera och hantera uppdragskritiska åtkomstapplikationer under ett utvecklingsprojekt

  4. hur duplicerar jag mina sql-resultat?