Сопоставить результаты SQL-запроса с сущностями (C#)
Есть ли способ автоматизировать запрос в класс в C# для строгого ввода результатов запроса? Я не хочу получать доступ к результатам запроса с помощью DataTable, указав имя столбца вручную.
4 ответа
Мой любимый вопрос Используйте QueryFirst. Напишите ваш SQL в окне редактора SQL, синтаксис проверяется при вводе, а затем QueryFirst сгенерирует оболочку C# для его выполнения со строго типизированными входами и выходами. И есть множество других преимуществ:-) Встроенная поддержка SqlServer, MySql и Postgres. Другие легко добавить. Отказ от ответственности: я написал QueryFirst.
Есть пара вариантов:
EntityFramework
- мощный и тяжеловесный. https://msdn.microsoft.com/en-us/library/aa937723(v=vs.113).aspx
Dapper
- легкий - в основном картограф https://www.codeproject.com/Articles/212274/A-Look-at-Dapper-NET
Если вам нужно только отобразить хранимые процедуры, запросы и т. Д., Dapper - хороший способ, так как он в основном добавляет методы расширения к connection
объект. Он не может создать базу данных и т. Д. Как Entity Framework, но все это действительно зависит от потребностей.
Вы должны взглянуть на AutoMapper. Это простой и удобный способ нанести на карту DataTable
к List<object>
вашей спецификации.
Вы можете найти статью, в которой говорится об этом (включая пример кода) здесь.
Если вы хотите автоматизировать процесс, вы можете использовать динамические объекты, которые не требуют создания определенных классов для каждого DataTable
что вы используете.
Надеюсь, это помогло!
На LINQ to DB есть полезная библиотека
"LINQ to DB - это самая быстрая библиотека доступа к базе данных LINQ, предлагающая простой, легкий, быстрый и безопасный для типов слой между вашими объектами POCO и вашей базой данных".