Сопоставить результаты 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 и вашей базой данных".

https://github.com/linq2db/linq2db

Другие вопросы по тегам