Ich habe einen schnellen Vergleich der verschiedenen Anbieter durchgeführt, bestehend aus:
- Installationserfahrung.
- Konnektivität.
- Server-Explorer-Erfahrung.
- Aktualisierung aus Datenbankerfahrung (Datenbank zuerst).
- Datentypzuordnungen (Datenbank zuerst).
Hier sind die Schlussfolgerungen:
1. Installationserfahrung.
ODP.NET von Oracle (Beta 3):Komplexe Installation separater x86- und x64-Versionen, Installer nicht für Windows ausgelegt. Füllt den Systempfad aus (gefährlich nahe an der maximalen Länge), installiert nicht in Standardordnern (Programmdateien + Anwendungsdaten).
DotConnect von Devart:Reibungslose Installation, Anbieter-DLL wird vollständig verwaltet.
Fortschritt von DataDirect:Reibungslose Installation, Anbieter-DLL wird vollständig verwaltet.
OPENLINK:Scheint eine serverseitige Installation zu erfordern, wurde nicht weiter getestet.
2. Konnektivität.
ODP.NET von Oracle (Beta 3):Kompliziert zu konfigurieren, erfordert eine Oracle-Installation auf dem Client-Rechner und entweder eine zusätzliche TSN-Datei in der Oracle-Installation oder eine lange und komplexe Verbindungszeichenfolge, die wie LISP/Scheme aussieht.
Aktualisierung: Konnte dies in der Dokumentation nicht finden, aber die Verbindungszeichenfolge kann auch eine einfache Datenquellendefinition enthalten, z. Servername:Port/Dienstname.
DotConnect von Devart:Einfache Verbindungszeichenfolge + Assistent.
Fortschritt von DataDirect:Einfache Verbindungszeichenfolge + Assistent.
3. Server-Explorer-Erfahrung.
ODP.NET von Oracle (Beta 3):Das leistungsstärkste der drei, ermöglicht einfaches Bearbeiten und Anzeigen von Schlüsseln und Indizes.
Devart's DotConnect:Anzeigen von Tabellen und Feldern.
Fortschritt von DataDirect:Ermöglicht einfaches Bearbeiten, Anzeigen von Schlüsseln und Indizes.
4. Aktualisierung aus Datenbankerfahrung (Datenbank zuerst).
ODP.NET von Oracle (Beta 3):Straightforward.
Devart's DotConnect:Zeigt Tabellen aus allen Schemas, keine Filtermöglichkeit - macht das Finden von Tabellen ermüdend.
Fortschritt von DataDirect:Straightforward.
5. Datentypzuordnungen (Datenbank zuerst).
ODP.NET von Oracle (Beta 3):Die Standardzuordnung für Zahl (1,0), Zahl (2,0) und Zahl (3,0) ist falsch*. Kann manuell für Zahl (2,0) und Zahl (3) überschrieben werden ,0). Fixing for number(1,0) funktioniert nicht (zumindest nicht in Beta 3 - hat möglicherweise in Beta 2 funktioniert).
Aktualisierung: Jetzt, da die Release-Version herausgekommen ist (112030), wurde dies behoben. Einige Zuordnungen sind über den Abschnitt in der Datei app.config möglich.
DotConnect von Devart:Zeigt Tabellen aus allen Schemas, keine Option zum Filtern - macht das Auffinden von Tabellen ermüdend.Standard-Mapping für Binary Float, Binary Double, Timestamp mit Zeitzone, Zahl(2,0), Zahl(3,0) und Zahl(4 ,0) sind falsch*. Die manuelle Übersteuerung sollte funktionieren - habe ich nicht überprüft.
Progress:Default-Zuordnungen von DataDirect sind OK*.
(*) Mappings, die ich erwartet habe:
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
Wenn Sie möchten, dass der Datenbanktyp eine beliebige Zahl im .NET-Typbereich speichern kann, erfordert IntX eine Zahl (N,0), wobei Ceil(log10(2^X)) =N für die Speicherung**.
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)
** Berechnung geht von vorzeichenlosen Zahlen aus, für vorzeichenbehaftete Zahlen ceil(log(2^(X-1)).
Referenzen für Datentypannahmen:
TECH on the Net
Devart
Oracle