Я провел быстрое сравнение различных провайдеров, состоящих из:
- Опыт установки.
- Подключение.
- Опыт работы обозревателя сервера.
- Обновление из базы данных (база данных сначала).
- Отображения типов данных (база данных сначала).
Вот выводы:
1.Опыт установки.
Oracle ODP.NET (бета-версия 3): Сложная установка отдельных версий x86 и x64, установщики не предназначены для Windows.Заполняет системный путь (опасно близко к максимальной длине), не устанавливается в стандартные папки (программные файлы + appdata).
Devart's DotConnect: плавная установка, DLL-библиотека поставщика полностью управляется.
Progress DataDirect: Плавная установка, DLL-библиотека поставщика полностью управляется.
OPENLINK: Требуется установка на стороне сервера, дальнейшее тестирование не проводилось.
2.Возможность подключения.
Oracle ODP.NET (бета-версия 3): Сложно настроить, требует установки Oracle на клиентском компьютере и либо дополнительного файла TSN при установке Oracle, либо длинной и сложной строки подключения, которая выглядит как LISP /Схема. Обновление: Не удалось найти это в документации, однако строка подключения также может содержать простое определение источника данных, например, serverName: port / serviceName.
Devart's DotConnect: Простая строка подключения + мастер.
Выполнение DataDirect: простая строка подключения + мастер.
3.Опыт работы с обозревателем серверов.
Oracle ODP.NET (бета-версия 3): самый мощный из трех, позволяет легко редактировать, просматривать ключи и индексы.
Devart DotConnect: просмотр таблици поля.
Ход выполнения DataDirect: позволяет легко редактировать, просматривать ключи и индексы.
4.Обновление из базы данных (база данных в первую очередь).
Oracle ODP.NET (бета-версия 3): просто.
Devart's DotConnect: показывает таблицы из всех схем, без возможности фильтрации - делаетпоиск таблиц утомляет.
Прогресс DataDirect: просто.
5.Отображения типов данных (сначала база данных).
Oracle ODP.NET (бета-версия 3): сопоставления по умолчанию для числа (1,0), числа (2,0) и числа (3,0)неправильно*.Можно вручную переопределить для числа (2,0) и числа (3,0).Исправление для числа (1,0) не работает (по крайней мере, в бета-версии 3 - возможно, работало в бета-версии 2).
Обновление: Теперь, когда выпущена версияотсутствует (112030) это было исправлено.Некоторые сопоставления возможны через секцию в файле app.config .
Devart's DotConnect: показывает таблицы из всех схем, нет опции для фильтрации - делает поиск таблиц утомительным.Неверное отображение по умолчанию для двоичного числа с плавающей запятой, двоичного двойного числа, метки времени с часовым поясом, числом (2,0), числом (3,0) и числом (4,0) *Ручное переопределение должно работать - не проверял.
Ход выполнения DataDirect: стандартные сопоставления в порядке *.
(*) Отображения, которые я ожидал:
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
Если вы хотите, чтобы тип базы данных мог хранить любое число в диапазоне типов .NET, тогда IntX требуется число (N, 0), где Ceil (log10 (2 ^ X)) = Nдля хранения **.
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)
** Расчет предполагает использование чисел без знака, для чисел со знаком ceil (log (2 ^ (X-1)).
Ссылки на предположения типа данных: TECH в сети Devart Oracle