Dapper Extensions 项目是开源的;每个人都知道。我从 GitHub 下载并修改它以满足我的需要。
Dapper Extensions 在SqlGeneratorImpl
类内部构建/生成 SQL 查询。此类中有多种方法可生成各种查询。
我在类中添加了以下属性DapperExtensions.DapperExtensions
static
:
static string lastGeneratedQuery;
public static string LastGeneratedQuery
{
get
{
lock(_lock)
{
return lastGeneratedQuery;
}
}
internal set
{
lock(_lock)
{
lastGeneratedQuery = value;
}
}
}
此外,在类的各种方法中设置此属性SqlGeneratorImpl
。Select
以下是我如何在方法中设置它的示例。
public virtual string Select(IClassMapper classMap, IPredicate predicate, IList<ISort> sort, IDictionary<string, object> parameters)
{
......
......
StringBuilder sql = new StringBuilder(string.Format("SELECT {0} FROM {1}",
......
......
DapperExtensions.LastGeneratedQuery = sql.ToString();
return sql.ToString();
}
基本测试运行良好;我还没有彻底测试过。如果有任何变化,我会更新这个答案。
请注意,我不建议将此作为标准解决方案;这只是一个适合我需要的技巧。我真的很想将其视为图书馆的常规功能。如果您有更好的解决方案,请发布答案。否则,请发表评论以改进此处建议的解决方案。
在分支中合并此拉取请求master
后,希望现在可以开箱即用,不再需要下载和修改工具包源代码。请注意,我尚未对此进行验证。