Provedl jsem rychlé srovnání různých poskytovatelů sestávající z:
- Zkušenosti s instalací.
- Připojení.
- Průzkumník serveru.
- Aktualizace z databáze (nejdříve databáze).
- Mapování datových typů (nejdříve databáze).
Zde jsou závěry:
1. Zkušenosti s instalací.
Oracle ODP.NET (beta 3):Složitá instalace samostatných x86 a x64 verzí, instalátory nejsou navrženy pro Windows. Vyplňuje systémovou cestu (nebezpečně blízko maximální délky), neinstaluje se do standardních složek (programové soubory + appdata).
Devart's DotConnect:Hladká instalace, DLL poskytovatele je plně spravována.
DataDirect Progress:Hladká instalace, DLL poskytovatele je plně spravována.
OPENLINK:Zdá se, že vyžaduje instalaci na straně serveru, dále netestováno.
2. Konektivita.
Oracle ODP.NET (beta 3):Složitá konfigurace, vyžaduje instalaci Oracle na klientském počítači a buď další soubor TSN v instalaci Oracle, nebo dlouhý a složitý připojovací řetězec, který vypadá jako LISP/Scheme.
Aktualizace: V dokumentaci jsem to nenašel, nicméně připojovací řetězec může obsahovat i jednoduchou definici zdroje dat, např. serverName:port/serviceName.
Devartův DotConnect:Jednoduchý připojovací řetězec + průvodce.
DataDirect's Progress:Jednoduchý připojovací řetězec + průvodce.
3. Zkušenosti Server Explorer.
Oracle ODP.NET (beta 3):Nejvýkonnější ze tří, umožňuje snadné úpravy, prohlížení klíčů a indexů.
Devart's DotConnect:Zobrazení tabulek a polí.
DataDirect's Progress:Umožňuje snadné úpravy, prohlížení klíčů a indexů.
4. Aktualizace z databáze (nejdříve databáze).
Oracle ODP.NET (beta 3):Přímočaré.
Devartův DotConnect:Zobrazuje tabulky ze všech schémat, bez možnosti filtrování – hledání tabulek je vyčerpávající.
Pokrok společnosti DataDirect:Přímý.
5. Mapování datových typů (nejprve databáze).
Oracle ODP.NET (beta 3):Výchozí mapování pro číslo (1,0), číslo (2,0) a číslo (3,0) je chybné*. Lze ručně přepsat pro číslo (2,0) a číslo (3 ,0). Oprava čísla (1,0) nefunguje (alespoň ne v beta 3 – možná fungovala v beta 2).
Aktualizace: Nyní, když je uvolněná verze (112030), to bylo opraveno. Některá mapování jsou možná prostřednictvím sekce v souboru app.config.
Devart's DotConnect:Zobrazuje tabulky ze všech schémat, bez možnosti filtrování – hledání tabulek je vyčerpávající. Výchozí mapování pro binární float, binární double, časové razítko s časovou zónou, number(2,0), number(3,0) a number(4 ,0) jsou špatně*. Ruční přepis by měl fungovat – nezkontrolováno.
DataDirect's Progress:Výchozí mapování jsou v pořádku*.
(*) Mapování, která jsem očekával:
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
Pokud chcete, aby typ databáze mohl ukládat libovolné číslo v rozsahu typů .NET, pak IntX vyžaduje číslo(N,0), kde Ceil(log10(2^X)) =N pro úložiště**.
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)
** Výpočet předpokládá čísla bez znaménka, pro čísla se znaménkem ceil(log(2^(X-1)).
Reference pro předpoklady datového typu:
TECH on the Net
Devart
Oracle