Список поставщиков Entity Framework для различных баз данных

Какие провайдеры существуют и ваш опыт работы с ними

Я хотел бы узнать обо всех возможных собственных провайдерах платформы .NET Framework Entity Framework, а также их ограничениях по сравнению с LINQ2Entities по умолчанию (от MS для MS SQL). Если для одной и той же базы данных есть еще лучше. Скажите мне, и я буду обновлять этот пост этим списком.

Не забудьте добавить дополнительных поставщиков прямо в это сообщение или предоставить ответ, а другие (включая меня) добавят его в список.

Entity Framework 1

Microsoft SQL Server Standard/Enterprise/Express

Microsoft SQL Server CE (компактное издание)

  • Любой провайдер?

MySQL

  • MySQL Connector (начиная с версии 6.0) - я читал о проблемах при использовании Skip(), Take() и Sort() в одном и том же дереве выражений - каждый может ввести свой опыт/знания относительно этого.

    Примечание. Интеграция с MySQL Connector/NET Visual Studio не поддерживается в Express Editions Visual Studio, что означает, что вы не сможете просматривать базы данных MySQL в окне проводника базы данных или добавлять MySQL источника данных с помощью диалоговых окон мастера Visual Studio. Некоторые пользователи могут обнаружить, что это ограничивает их способность использовать Entity Framework и MySQL в Visual Studio Express).

  • Devart dotConnect for MySQL - аналогичные проблемы с коннектором MySql, как я читал, и оба пытаются обвинить MS для него [эти вопросы должны быть решены]

SQLite

PostgreSQL

Oracle

DB2

Sybase

Informix

Firebird

Пакеты поставщиков

Entity Framework 4 ( beta​​strike > )

Microsoft SQL Server

  • Microsoft Linq to Entities 4 - поставляется с .net 4.0 и Visual Studio 2010; пока единственный поставщик для EF4

MySQL

SQLite

PostgreSQL

Oracle

Службы Analysis Services Microsoft SQL Server (SSAS)

Ответ 1

DB2 будет работать, но если вы хотите использовать некоторые из готовых .NET-функций, которые все мы считаем само собой разумеющимися (подумайте о членстве и поставщиках ролей), у вас будет довольно много работы на вашем Руки. DB2 не очень хорошо справляется с хранимыми процедурами, поэтому вы также смотрите на множество параметризованных встроенных SQL-запросов.

У меня также были некоторые проблемы с производительностью с поставщиком из IBM. Существует другой поставщик, доступный от компании под названием DataDirect. Это выглядит более результативно, но это будет стоить вам. Для чего-то вроде внешнего сайта, где скорость важна, стоимость, вероятно, не будет проблемой.

Я уверен, что DB2 - отличная система, если вы строите на другой платформе, но она не была разработана, чтобы хорошо играть с .NET. Если вы уже не состоите в браке с DB2, я бы посмотрел в другом месте.

Ответ 2

Я не думаю, что DB2 работает с EF 4. Если это произойдет, кто-то, пожалуйста, поправьте меня и скажите, как это делается. Я не могу заставить поставщиков DB2 отображаться в диалоговом окне "Источник данных".

Ответ 3

Поставщик данных IBM Data для .NET позволяет Informix работать с EF. См. Здесь: текст ссылки

Ответ 4

Поставщик данных IBM Data Server содержит некоторые ограничения, которые делают его раздражающим и хрупким для более сложных сценариев запросов. Кроме того, дизайнер EDMX не работает с таблицами Informix с префиксом "informix. *". См. Здесь: текст ссылки

Ответ 5

Вам не хватает System.Data.SQLite для SQLite. Это с открытым исходным кодом и достаточно надежный из моего опыта. Насколько я знаю, это был один из первых поставщиков EF для баз данных, отличных от SQL Server

Ответ 6

Проблемы "Пропустить/принять и заказать" были исправлены несколько месяцев назад у поставщика Devart.

Некоторые примечания о поддержке EF4
На данный момент мы поддерживаем бета-версию 1 Beta 1 и EF4 для Visual Studio. Мы планируем выпустить сборку с поддержкой EF4 в конце декабря - начале января. Мы не можем назвать нашу поддержку Entity Framework идеальной - этот ORM был первоначально разработан для MS SQL Server, поэтому возможность учитывать чудо других СУБД значительно ограничена.

Существует ряд проблем, которые тот, кто реализует поставщик EF, просто не может работать. Некоторые примеры доступны здесь. Основная проблема связана с операциями CROSS APLY и OUTER APPLY, сгенерированными в среде исполнения EF в некоторых случаях. Другие СУБД не предоставляют этого утверждения, поэтому проблема возникает при переводе. Также следует понимать, что в случае устаревших баз данных EF обычно неприменим.

Мы учитываем пользователей, которые не удовлетворены разработчиком Microsoft по умолчанию и отправляют Entity Developer - мощный инструмент времени разработки - с наши продукты.

Ответ 7

EF 7 поддерживает следующих поставщиков баз данных

• Microsoft SQL Server

• SQLite

• Microsoft SQL Server Compact Edition

• Npgsql (PostgreSQL)

• IBM Data Servers

• InMemory (для тестирования)

Ссылка

Ответ 8

В MySQL есть коннектор для EF4, текущая версия - 6.3.5, и ее основные функции работают нормально, но у нее все еще есть проблемы с несколько методов, например

  • System.Data.Objects.ObjectContext.CreateDatabase()
  • System.Data.Objects.ObjectContext.DatabaseExists()

что затрудняет полное использование подхода, основанного на модели. Это возможно, вручную отредактировав MySQL script (доступный с помощью метода CreateDatabaseScript). Команда MySQL, похоже, не стремится решить эти ошибки, я не уверен, что уровень обязательств на самом деле является их частью, но он, безусловно, ниже, чем когда-то.

При этом одни и те же методы терпят неудачу с SQL CE (они не реализованы, и я не вижу, чтобы команда MS скорее всего справилась с этим в ближайшее время).