C# 我能从简洁的查询中得到字段结构吗?

C# 我能从简洁的查询中得到字段结构吗?,c#,dapper,C#,Dapper,我已经看过了源代码,但是对于这样一个小的ORM,有相当多的代码在进行。调用.query()后,是否有方法检索Dapper返回的查询的字段结构?本质上,我需要的数据与调用GetSchemaTable()时DataReader返回的数据相同。这可以按如下方式完成: 使用以下任一调用获取读卡器: IDataReader dr = _connection.ExecuteReader(sql) 或 现在,您可以调用dr.GetSchemaTable()来获取相关的模式DataTable 事实上,如果要利

我已经看过了源代码,但是对于这样一个小的ORM,有相当多的代码在进行。调用.query()后,是否有方法检索Dapper返回的查询的字段结构?本质上,我需要的数据与调用GetSchemaTable()时DataReader返回的数据相同。

这可以按如下方式完成:

使用以下任一调用获取读卡器:

IDataReader dr = _connection.ExecuteReader(sql)

现在,您可以调用dr.GetSchemaTable()来获取相关的模式
DataTable

事实上,如果要利用
GetSchemaTable()的重载,您可以将相同的类型强制转换为相关的
DbDataReader
类型,如
SqlDataReader或OracleDataReader

那么,如何将其具体化为IEnumerable或特定类型?不确定是否有通过DataReader创建IEnumerable的特定要求,因为可以使用Dapper查询调用直接获取。对于从DataReader转换,您需要使用反射,检查以下链接-保留点,创建实体,将属性应用于映射到从数据库获取的列名,然后使用DataReader.Read()的每次调用填充对象的每个属性,但这就是使用Dapper的点-我希望它进行映射。我只是碰巧需要获取结果元数据。我想执行.Query()或.Query调用,但随后检索有关此结果的元数据。是的,我可以手动完成所有这一切,但如果可能的话,我宁愿不这样做(这就是问题所在)。Dapper作为一个微型ORM,对于许多常见的场景来说非常有用,这需要获取Poco、一对一映射和一对多映射,这使得它成为一个很好的微型ORM。然而,并非所有感知到的用例都是开箱即用的。在使用查询语法时获取模式基本上是不存在的,但是您可能希望询问相同的@,或者计划修改Dapper代码以公开必要的API
IDataReader dr = _connection.GetStream(sql)