Как реализовать независимость от базы данных с помощью Entity Framework

StackOverflow https://stackoverflow.com/questions/75959

Вопрос

Я использовал Entity Framework для запуска довольно простого примерного проекта.В проекте я создал новую модель данных объекта из базы данных SQL Server 2000.Я могу запрашивать данные с помощью LINQ для объектов и отображать значения на экране.

У меня есть база данных Oracle с чрезвычайно похожей схемой (я пытаюсь быть точным, но я не знаю всех деталей Oracle).Я бы хотел, чтобы мой проект мог запускаться как на SQL Server, так и в хранилищах данных Oracle с минимальными усилиями.Я надеялся, что смогу просто изменить строку конфигурации моей модели данных Entity, а Entity Framework позаботится обо всем остальном.Однако, похоже, это сработает не так гладко, как я думал.

Кто-нибудь сделал то, что я пытаюсь сделать?Опять же, я пытаюсь написать приложение, которое может запрашивать (и обновлять) данные из базы данных SQL Server или Oracle с минимальными усилиями, используя Entity Framework.Вторичная цель состоит в том, чтобы не приходилось перекомпилировать приложение при переключении между хранилищами данных.Если мне нужно "Обновить модель из базы данных", это может быть нормально, потому что мне не пришлось бы перекомпилировать, но я бы предпочел не идти этим путем.Кто-нибудь знает о каких-либо шагах, которые могут потребоваться?

Это было полезно?

Решение

Что обычно понимается под термином "Незнание постоянства", так это то, что ваши классы сущностей не заполняются зависимостями от фреймворка (важно для N-уровневых сценариев).Сейчас это не так, поскольку классы сущностей должны реализовывать определенные интерфейсы EF ("IPOCO"), в отличие от обычных старых объектов CLR.Как упоминалось в другом постере, существует решение под названием Адаптер персистентного невежества (POCO) для Entity Framework V1 для этого EF V2 будет поддерживать POCO "из коробки".

Но я думаю, что на самом деле вы имели в виду независимость от базы данных.С одним большим конфигурационным XML, который включает модель хранения, концептуальную модель и сопоставление между этими двумя, из которых во время разработки будет сгенерирован типизированный ObjectContext, мне также трудно представить, как прозрачно поддерживать две базы данных.

Что, вероятно, выглядит более многообещающим, так это применение независимого от базы данных ADO.NET поставщика, подобного тому, который Прямая передача данных.DataDirect также объявила о поддержке EF в третьем квартале 2008 года.

Другие советы

http://blogs.msdn.com/jkowalski/archive/2008/09/09/persistence-ignorance-poco-adapter-for-entity-framework-v1.aspx

Основная проблема заключается в том, что entity framework не был разработан с учетом невежества в отношении постоянства.Я бы, честно говоря, посмотрел на использование чего-то другого, кроме entity framework.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top