sql >> Databáze >  >> RDS >> Oracle

Porovnání poskytovatelů kompatibilních s Entity Framework pro Oracle?

Provedl jsem rychlé srovnání různých poskytovatelů sestávající z:

  1. Zkušenosti s instalací.
  2. Připojení.
  3. Průzkumník serveru.
  4. Aktualizace z databáze (nejdříve databáze).
  5. 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



  1. SQL Server:Rozdíl mezi PARTITION BY a GROUP BY

  2. Jak INTERSECT funguje v PostgreSQL

  3. Jak nakonfigurovat SELinux pro PostgreSQL a TimescaleDB

  4. Jak dotazovat sloupec json na prázdné objekty?