Как реализовать EF с динамическим концептуальным слоем? - PullRequest
1 голос
/ 02 сентября 2011

У меня есть конкретный сценарий, который меня интересует, может ли (и каким образом) решить Entity Framework.

Я разрабатываю структуру для нового решения, которое будет передано многим разработчикам для расширения.и улучшать со временем.Я хотел бы предоставить простой уровень доступа к данным, который они могут использовать на уровне домена, который они реализуют, не требуя от них внесения изменений в код доступа к данным.Я исследую различные инструменты, такие как NHibernate, LINQ-to-SQL, EF, а также старый добрый ADO.NET.

В качестве примера того, что мне нужно, используя LINQ-to-SQL,код на уровне домена вызовет метод GetTable для L2S DataContext, который возвращает IQueryable .Теоретически это означает, что DataContext может разрешить запрос для любого T. Конечно, в действительности DataContext должен знать, как обрабатывать T.

Глядя на то, как работает EF, я вижу некоторые параллели с другими инструментамино не могу найти, как мне достичь своих целей.Вот что я хотел бы, чтобы произошло:

Я предоставляю «контекст» по умолчанию, который предоставляет метод, подобный GetTable (например, Query ), который возвращает IQueryable .Это учитывает будущие улучшения, где T представляет EntityTypes, которые еще не были реализованы, и позволяет разработчикам легко сосредоточиться на уровне домена, потому что все, что им когда-либо нужно, это вызывать GetTable (или аналогичный).

Единственное другое требование к разработчику домена - предоставить уровень отображения, где концептуальный уровень (T) отображается на уровень хранения (физическая схема базы данных).

FWIW, я полагаю, это легко выполнитьс NHibernate через сопоставление файлов XML.Есть ли способ заставить это работать с EF?

Ответы [ 2 ]

2 голосов
/ 02 сентября 2011

Похоже, что вы не провели надлежащего исследования EF

Если вы используете EF 4, вы используете метод CreateObjectSet<T>(), который похож на метод GetTable<T>

Для EF 4.1 существует Set<T>() метод

Код EF 4.1 сначала предлагает сопоставление, подобное NHibernate.Это ближе к тому, что предлагает nhibernate.

0 голосов
/ 02 сентября 2011

Множество вопросов, которые касаются этой же темы.Они не обсуждают плюсы и минусы EF против NHiberate и т. Д., Но очень просто создать очень общий уровень доступа к данным с EF.

http://elegantcode.com/2009/12/15/entity-framework-ef4-generic-repository-and-unit-of-work-prototype/

GenericРеализация репозитория с EF

Универсальный репозиторий Entity Framework

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