Как реализовать независимость базы данных с помощью Entity Framework - PullRequest
8 голосов
/ 16 сентября 2008

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

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

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

Ответы [ 2 ]

2 голосов
/ 17 сентября 2008

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

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

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

1 голос
/ 17 сентября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...