Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Comparação de provedores compatíveis com Entity Framework para Oracle?


Eu fiz uma comparação rápida dos diferentes provedores que consistem em:
  1. Experiência de instalação.
  2. Conectividade.
  3. Experiência do Explorador de Servidores.
  4. Atualizando a partir da experiência do banco de dados (primeiro o banco de dados).
  5. Mapeamentos de tipo de dados (primeiro banco de dados).

Aqui estão as conclusões:

1. Experiência de instalação.

ODP.NET da Oracle (beta 3):Instalação complexa de versões x86 e x64 separadas, instaladores não projetados para Windows. Preenche o caminho do sistema (perigosamente próximo ao comprimento máximo), não instala em pastas padrão (arquivos de programa + appdata).

A instalação DotConnect:Smooth do Devart, a DLL do provedor é totalmente gerenciada.

Progresso do DataDirect:Instalação suave, a DLL do provedor é totalmente gerenciada.

OPENLINK:Parece exigir instalação no lado do servidor, não testei mais.

2. Conectividade.

ODP.NET da Oracle (beta 3):Complicado para configurar, requer instalação do Oracle na máquina cliente e arquivo TSN adicional na instalação do Oracle ou uma string de conexão longa e complexa que se parece com LISP/Scheme.
Atualização: Não foi possível encontrar isso na documentação, no entanto, a string de conexão também pode conter uma definição simples de fonte de dados, por exemplo serverName:port/serviceName.

DotConnect de Devart:seqüência de conexão simples + assistente.

Progresso do DataDirect:Cadeia de conexão simples + assistente.

3. Experiência do Explorador de Servidores.

ODP.NET da Oracle (beta 3):O mais poderoso dos três, permite fácil edição, visualização de chaves e índices.

DotConnect de Devart:Visualização de tabelas e campos.

Progresso do DataDirect:Permite fácil edição, visualização de chaves e índices.

4. Atualizando a partir da experiência do banco de dados (primeiro o banco de dados).

ODP.NET da Oracle (beta 3):Simples.

DotConnect do Devart:mostra tabelas de todos os esquemas, sem opção de filtro - torna a localização de tabelas exaustiva.

Progresso do DataDirect:Direto.

5. Mapeamentos de tipo de dados (primeiro banco de dados).

ODP.NET da Oracle (beta 3):O mapeamento padrão para number(1,0), number(2,0) e number(3,0) está errado*. Pode substituir manualmente para number(2,0) e number(3 ,0). A correção do número (1,0) não funciona (pelo menos não no beta 3 - pode ter funcionado no beta 2).

Atualização: Agora que a versão de lançamento foi lançada (112030), isso foi corrigido. Alguns mapeamentos são possíveis por meio da seção no arquivo app.config.

DotConnect do Devart:Mostra tabelas de todos os esquemas, sem opção de filtro - torna a localização de tabelas exaustiva. ,0) estão errados*. A substituição manual deve funcionar - não foi verificada.

Progresso do DataDirect:os mapeamentos padrão estão OK*.

(*) Mapeamentos esperados:
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 você quiser que o tipo de banco de dados seja capaz de armazenar qualquer número no intervalo do tipo .NET, então IntX requer um número(N,0) onde Ceil(log10(2^X)) =N para armazenamento**.
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)

** O cálculo assume números sem sinal, para números com sinal ceil(log(2^(X-1)).

Referências para suposições de tipo de dados:
TECH on the Net
Devart
Oracle