Независимое от базы данных приложение ASP.NET?
Одно из требований приложения ASP.NET, которое я разрабатываю, должно быть независимым от базы данных; то есть, чтобы иметь возможность общаться с большим количеством механизмов баз данных, не внося существенных изменений в код. Я уже знаю, что первая часть решения включает абстрагирование DAL (уровня доступа к данным) за интерфейсом, и это позволяет заменить DAL без изменений кода, но проблема, с которой я сталкиваюсь, заключается в том, как реализовать DAL.
Исследования были очень неубедительными в этом отношении, но они говорят мне, что у меня есть 2 варианта:
- Использование ORM (например, Entity Framework или Dapper)
- Написание полностью в ADO.NET
Entity Framework прост, но, похоже, после того, как я сгенерирую модель, EF не позволит мне изменить механизм БД, на который она нацелена. OTOH, написание многих DAL в ADO.NET (по одному на каждый целевой механизм) дает мне такую гибкость, но я застрял в написании всего с нуля.
Итак, у меня есть следующие вопросы:
- Есть ли способ заставить EF взаимодействовать с различными движками БД во время выполнения?
- Если нет, то существует ли какой-либо зрелый, стабильный ORM, который поддерживает несколько механизмов DB на лету?
Заранее спасибо.
1 ответ
Похоже, что это возможно с помощью Entity Framework - один и тот же файл EDMX для разных провайдеров.
Однако для меня это звучит как рецепт катастрофы. Я написал бы это сам, используя ANSI SQL, убедившись, что мои таблицы, столбцы и типы данных во всех БД совпадают и имеют одинаковое поведение - а также внешние ключи, автоматическое создание ключей и т. Д. Затем все проверяйте и скрестите пальцы.