2012-02-26 6 views
1

Я использую инфраструктуру Entity в качестве уровня базы данных в своем приложении, но я обнаружил, что она не поддерживает базу данных oracle, и для этой цели мне понадобится сторонний поставщик.Поддержка базы данных Entity Framework

Однако я хочу, чтобы база данных поддерживала несколько баз данных (Oracle, MS Sql Server) и в то же время поддерживала модель сущности, такую ​​как LinqToSql и devart.

, если у кого-то есть какая-то информация, я могу вам признаться. Буду признателен. Спасибо.

ответ

1

Что вы хотите здесь, вероятно, шаблон репозитория, который может сидеть посередине, чтобы ваше приложение не заботилось о том, как хранятся базовые данные.

Вы можете использовать что-то вроде моего репозитория шаблона (об этом читайте здесь: http://blog.staticvoid.co.nz/2011/10/staticvoid-repository-pattern-nuget.html) и реализовать пользовательские IRepositoryDataSource для оракула (вы можете сделать это с помощью LINQ к провайдеру оракула из CodePlex, http://linqtooracle.codeplex.com/) или в качестве альтернативы вы можете написать свой собственный репозиторий с реализациями как для sql, так и для oracle.

+0

Entity Framework уже реферат из базы данных. Вместо этого вы бы не захотели реализовать другой репозиторий. – usr

+0

Entity Framewok не полностью абстрагируется от базы данных. Хотя кажется. Если вы помещаете точку останова в любом месте, где вы используете создаваемые объекты EF, вы увидите, что компилятор создал прокси-класс, который не является тем же типом, что и ваш класс сущности. Это имеет значение для отражения и двоичной сериализации этих классов, хотя сериализация XML выглядит нормально. Эти прокси содержат данные и поведение, используемые для отслеживания изменений. Для истинной абстракции потребуется шаблон репозитория или какое-то сопоставление с POCO dto –

1

Entity Framework не включает в себя готового поставщика для любой СУБД, отличной от SQL Server. Ожидается, что любой сторонний поставщик RDBMS, который хочет поддержать EF, предоставит свою собственную реализацию на основе модели поставщика Microsoft. Oracle фактически выпустил официального поставщика, который является частью ODP.NET. Я рекомендовал бы это, потому что она свободна:

http://www.oracle.com/technetwork/issue-archive/2011/11-sep/o51odt-453447.html

P.S. - Поставщики Devart LinqConnect не являются действительно Поставщики Linq to SQL. Они предоставляют классы, которые имитируют структуру и функциональность классов Linq to SQL (DataContext, EntitySet<T> и т. Д.), Но они находятся в другом пространстве имен. Невозможно, чтобы кто-либо другой, кроме Microsoft, реализовал поставщик Linq to SQL, поскольку они никогда не отображали модель поставщика через общедоступные типы.

Смежные вопросы