Dapper:使用 <T> 执行来自不同资源的多个查询
Posted
技术标签:
【中文标题】Dapper:使用 <T> 执行来自不同资源的多个查询【英文标题】:Dapper: Using <T> to execute multiple queries from different resources 【发布时间】:2021-12-08 14:55:44 【问题描述】:好的,所以我对如何在标题中措辞有零想法,所以我将在这里解释我想要实现的目标。
我有一个 .cs 文件,其中包含使用下面列出的 dapper 的连接代码。
namespace DBConnector
public static class Helper
public static string CnnVal(string name)
return ConfigurationManager.ConnectionStrings[name].ConnectionString;
public class DataAccess<T>
public List<T> GetInfo(string query, object parameters = null)
using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(Helper.CnnVal("ProxyRPDB")))
return connection.Query<T>(string, object);
我想要实现的是通过上述代码从不同的 .cs 文件执行查询。但!我试图让上面的代码接受来自多个 .cs 文件的查询执行,这些文件都需要来自不同表的不同数据。我一直在努力寻找信息……所以这确实是最后的手段。我正在为 .NET 4.5.2 使用 Dapper。
【问题讨论】:
嗨,有编译器错误吗? 我还没有进入那个阶段,因为我不知道如何完成代码。我目前唯一遇到的错误是在 connection.Queryconnection.Query<T>(query, parameters);
?
如果不清楚我要达到的目标(因为我觉得我没有正确解释它)。生病提供一个例子。我有上面的 DataAccess.cs,其中包含我的连接字符串和 connection.Query。我有 2 个其他 .cs 脚本,我希望能够通过此脚本 connection.Query 发送查询,因此我不必经常为其他脚本重写它们。而是选择使用参数(如果你愿意的话)在 Query首先,我们需要修复GetInfo()
方法中的基本语法错误:
public static class DataAccess
public static IEnumerable<T> GetInfo<T>(string query, object parameters = null)
using (var connection = new System.Data.SqlClient.SqlConnection(Helper.CnnVal("ProxyRPDB")))
return connection.Query<T>(query, parameters);
现在,假设您在其他 *.cs 文件中有正确的引用和使用指令,您可以在这些文件中执行以下操作:
var results = DataAccess.GetInfo<MyTableType>("SELECT * FROM [MyTable]");
foreach(var record in results)
//...
Dapper 现在将尝试将查询结果映射到 MyTableType
类的实例,因此请确保您已经创建了这样的类。
请注意,这适用于 IEnumerable 而不是 List。如果你真的需要一个 List(提示:你通常不需要,而且 IEnumerable 可以执行得更好)你总是可以在函数调用的末尾加上一个.ToList()
:
var results = DataAccess.GetInfo<MyTableType>("SELECT * FROM [MyTable]").ToList();
【讨论】:
所以这似乎解决了我的问题。就1个问题。表是否需要存在于我尝试使用“var results = DataAccess.GetInfousing
指令。以上是关于Dapper:使用 <T> 执行来自不同资源的多个查询的主要内容,如果未能解决你的问题,请参考以下文章