将 SQL 查询结果映射到实体中 (C#)

Map SQL Query results into entities (C#)

有没有一种方法可以将查询自动映射到 C# 中的 class 中,以便对查询结果进行强类型化?我不想再使用 DataTable 访问查询结果,手动指定列名。

你应该看看 AutoMapper。这是一种将 DataTable 映射到您指定的 List<object> 的简单且用户友好的方法。

您可以找到一篇讨论它的文章(包括示例代码)here.

如果你想自动化这个过程,你可以使用 dynamic 对象,它不需要你为你正在使用的每个 DataTable 创建特定的 类。

希望对您有所帮助!

有两个选项:

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那样创建数据库等,但这完全取决于需要。

LINQ to DB 上有一个有用的库

"LINQ to DB is the fastest LINQ database access library offering a simple, light, fast, and type-safe layer between your POCO objects and your database."

https://github.com/linq2db/linq2db

我最喜欢的问题。使用 QueryFirst。在 SQL 编辑器 window 中编写您的 SQL,在您键入时验证语法,然后 QueryFirst 将生成 C# 包装器来执行它,具有强类型的输入和输出。还有许多其他好处 :-) SqlServer、MySql 和内置的 Postgres 支持。其他的很容易添加。免责声明:我写了 QueryFirst。