Сравнение провайдеров, совместимых с Entity Framework для Oracle? - PullRequest
3 голосов
/ 06 ноября 2011

Я читал похожие вопросы и ответы на них, однако, похоже, никто не имеет дело с этим точным вопросом, за исключением одного, который устарел (с 2009 года - до EF4).

Есть ли у кого-нибудь положительныеили отрицательный опыт работы с поставщиками EF для Oracle, если да, то каков ваш опыт?

Похожие вопросы: Entity Framework и Oracle Можете ли вы использовать Microsoft Entity Framework с Oracle? Структура сущностей с базой данных Oracle Как выбрать поставщика Oracle для приложения .Net?

Поставщики, которых я знаю:ODP.NET Oracle: http://www.oracle.com/technetwork/topics/dotnet/index-085163.html
DotConnect Деварта: http://www.devart.com/dotconnect/entityframework.html
Ход выполнения DataDirect: http://www.datadirect.com/products/net/release-history.html
OPENLINK: http://uda.openlinksw.com/dotnet/

Я знаю, что поставщик Oracle в настоящее время находится на стадии бета-тестирования (3) и не полностью управляемый - отдельные двоичные файлы для 32-разрядных и 64-разрядных.

Устойчивы ли какие-либо другие?Есть ли что-то, что я пропустил?Какие из них были успешно использованы в ваших проектах?

Ответы [ 2 ]

12 голосов
/ 28 ноября 2011

Я провел быстрое сравнение различных провайдеров, состоящих из:

  1. Опыт установки.
  2. Подключение.
  3. Опыт работы обозревателя сервера.
  4. Обновление из базы данных (база данных сначала).
  5. Отображения типов данных (база данных сначала).

Вот выводы:

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

2 голосов
/ 09 ноября 2011

Я не пробовал EF 4.2, который должен иметь поддержку последних поставщиков данных, 4.1 имеет поддержку только поставщиков MS SQL из-за многочисленных новых расширений функций.

Здесь перечислены все поставщики http://blogs.msdn.com/b/adonet/archive/2011/11/01/ef-4-2-released.aspx

EF 4.2 доступен только в виде пакета NuGet и должен быть стабильным, я использую 4.1 в производстве (Asp.Net MVC и MS SQL Server)

Также,Вот некоторые предыдущие ответы, похожие на ваш вопрос: Поддержка Oracle Provider for Entity Framework (msdn)

Коротко, если вы используете Entity Framework 4.1, вам следует обновить, у вас может быть серьезное ядропроблемы с этим.Обновитесь до 4.2, а затем протестируйте снова, у провайдеров все должно работать нормально.Например,

dotConnect для Oracle поддерживает Entity Framework v4, поэтому в EF 4.2

это будет работать без проблем.
...