Добавлено для новых технологий:
С Microsoft Sql Server для Linux в бета-версии прямо сейчас, я думаю, можно не быть независимым от базы данных. .Net Core Path и маршрут MS-SQL позволяют вам работать на серверах Linux, таких как Ubuntu, полностью без оконных зависимостей.
Как таковой, по моему мнению, очень хорошим ходом является не использование полной структуры ORM или элементов управления данными и использование возможностей SSDT Visual Studio Projects (Sql Server Data Tools) и Micro ORM.
В Visual Studio вы можете создать Sql Server Project в качестве легального проекта Visual Studio. Это позволяет вам создать всю базу данных с помощью дизайнеров таблиц или редактирования необработанных запросов прямо в Visual Studio.
Во-вторых, вы получаете инструмент сравнения схем SSDT, который вы можете использовать для сравнения вашего проекта базы данных с действующей базой данных в Microsoft Sql Server и обновления. Вы можете синхронизировать ваш проект Visual Studio с сервером, в результате чего обновления в вашем проекте выходят на сервер. Или вы можете синхронизировать сервер с вашим проектом, что приведет к обновлению исходного кода. С помощью этого маршрута вы можете легко получить изменения, сделанные администратором базы данных прошлым вечером в обслуживании, и легко выдвинуть новые изменения в разработке для новой функции с помощью простого инструмента.
Используя тот же инструмент, вы можете вычислить сценарий миграции, не выполняя его на самом деле, если вам нужно передать его в операционный отдел и отправить заказ на изменение, он работает для этого потока на.
Теперь для написания кода против вашей базы данных MS-SQL я рекомендую PetaPoco.
Поскольку PetaPoco работает идеально в соответствии с вышеуказанным решением SSDT. PetaPoco поставляется с текстовыми шаблонами T4, которые вы можете использовать для генерации всех ваших классов сущностей данных, и генерирует для вас массовые классы слоя данных.
Суть в том, что вы должны сами писать запросы, что неплохо.
Итак, вы получите что-то вроде этого:
var people = dbContext.Fetch<Person>("SELECT * FROM People where Username Like '%@0%'", "bob");
PetaPoco автоматически обрабатывает параметризацию @ 0, а также имеет удобный класс Sql для построения запросов.
Кроме того, PetaPoco на порядок быстрее, чем EF6, и в 8+ раз быстрее, чем EF7.
Таким образом, в целом это решение включает в себя использование SSDT для управления SCHEMA и PetaPoco для интеграции кода, что обеспечивает высокую ремонтопригодность, настройку и очень хорошую производительность.
Единственным недостатком этого подхода является то, что вы сильно привязываетесь к Microsoft Sql Server. Тем не менее, Microsoft Sql Server, по моему мнению, является одним из лучших RDBM.
У него есть функции DBMail, Jobs, CLR и так далее. Кроме того, интеграция между Visual Studio и сервером MS-SQL является феноменальной, и вы ничего не получите, если выберете другую СУБД.