Я реализую проект колледжа для тестирования производительности Entity Framework 4.0 по сравнению с NHibernate (последняя версия). Я строю простую систему обработки транзакций для этого тестирования. Моими лицами будут такие вещи, как Клиент, Аккаунт, Заказ, Продукт.
Я хочу создать два отдельных DAL; первый DAL будет EntityFramework, а второй - NHibernate. Затем я создам слой бизнес-логики (BLL), который ссылается либо на один DAL, либо на другой, и использую его для тестирования. BLL будет включать такие методы, как «insertNewOrder ()» ,mendExistingOrder () и т. Д. Я хочу, чтобы мой BLL не зависел от фреймворка, поэтому я могу легко переключаться между каждым DAL.
Чтобы включить это, я предлагаю реализовать интерфейс «IContext», который будет реализован каждым DAL. IContext будет включать мои методы get () для каждой сущности, а также метод Save (). Каждый DAL затем реализует эти методы по-своему. Методы get () вернут IObjectSet, а не ObjectSet.
Я буду использовать шаблон T4 для создания объектов POCO из моего EDM и перенести их в отдельный проект. Каждый DAL может затем ссылаться на один и тот же набор объектов POCO.
Затем мой BLL создаст экземпляр интерфейса IContext и вызовет методы для этого интерфейса вместо создания определенного контекста (ObjectContext или ISession).
Это звучит как выполнимое решение? Любая статья на эту тему, которую я нахожу, включает в себя использование репозиториев, шаблон, который я не до конца понимаю, и который я бы хотел избежать, если это возможно. Я сосредоточен на тестировании каждой платформы, а не на создании приложения, которое является архитектурно правильным. Смотрите здесь, например:
Объекты POCO Entity Framework
Я частично основал этот подход на главе из "Programming Entity Framework 2nd Edition" Джулии Лерман. Я новичок как в NH, так и в EF (особенно в NH), поэтому любые советы или рекомендации будут оценены. Благодарю.