如何使用SqlBuilder

idl*_*age 6 c# sqlbuilder dapper

这个SqlBuilder:

var builder = new SqlBuilder(); 
var sql = builder.AddTemplate( /*...
Run Code Online (Sandbox Code Playgroud)

强烈的愚蠢的问题,但是,我该如何使用呢?我知道它在中Dapper.Contrib,但是那using句话还不够。using我需要添加哪些参考或其他陈述?

Car*_*vas 15

这个问题出现在 dapper 教程页面中,所以我正在更新答案。

在 1.6 版中,SqlBuilder位于 namespace 中Dapper。它包含在 nuget 包 Dapper.SqlBuilder 中。

这是它如何工作的一个例子:

var builder = new SqlBuilder();
builder.Select("id_something");
builder.Select("MyCol");
builder.Select("OtherCol");
DynamicParameters parameters = new DynamicParameters();
parameters.Add("@MyParam", 3, DbType.Int32, ParameterDirection.Input);
builder.Where("id_something < @MyParam", parameters);
// builder.Where("id_something < @MyParam", new { MyParam =3}); //this is other option for params.
builder.InnerJoin("OtherTable on OtherTable.id=MyTable.id");
//The /**something**/ are placeholders,
var builderTemplate = builder.AddTemplate("Select /**select**/ from MyTable /**innerjoin**/ /**where**/ ");
var result = connection.Query<MyClass>(builderTemplate.RawSql, builderTemplate.Parameters);
Run Code Online (Sandbox Code Playgroud)

这是生成的Sql:

Select id_something , MyCol , OtherCol
 from MyTable 
INNER JOIN OtherTable on OtherTable.id=MyTable.id
 WHERE id_something < @MyParam
Run Code Online (Sandbox Code Playgroud)


idl*_*age -2

不知道是否没有人知道或者是否太愚蠢而无法回答,但这是正确的说法:

using StackExchange.Profiling.Helpers.Dapper;