C# 是否可以使用Dapper来生成此查询?

C# 是否可以使用Dapper来生成此查询?,c#,.net-3.5,dapper,C#,.net 3.5,Dapper,是否可以执行以下操作?我试过了,但当它进入查询时,它只是说有一个空引用 var builder = new StringBuilder("select * from my table1 where 1 = 1"); if(x==1) builder.Append(" and x = @x"); if(y==2) builder.Append(" and y = @y"); // when it gets here, it just says null referenc

是否可以执行以下操作?我试过了,但当它进入查询时,它只是说有一个空引用

   var builder = new StringBuilder("select * from my table1 where 1 = 1");

if(x==1)
    builder.Append(" and x = @x");

if(y==2)
    builder.Append(" and y = @y");

// when it gets here, it just says null reference

 db.Query<table1>(builder.ToString(), new {x,y});
我希望
从表中选择*,其中a=@a或(b=@b)

但我得到了:


我希望
从表中选择*,其中a=@a和(b=@b)

这可能是由于。尝试修复于2016年7月31日进行,但采用这种方法。计划是在下一个主要版本中修复此问题。

您可以使用轻松创建动态条件:

var query=cn.QueryBuilder($@)
选择*
从桌子上
其中1=1
");
如果(x==1)
Append($”和x={x}”);
如果(y==2)
Append($”和y={y}”);
var results=query.query();
输出是完全参数化的SQL(
其中1=1,x=@p0,y=@p1
)。


免责声明:我是此库的作者之一

请引用整个错误消息。我没有看到任何立即出错的地方;你有来自异常的堆栈跟踪吗?@MarcGravel-对不起,Marc,我最初在手机上键入了这个,没有原始错误消息。如果x和y不为空或null,它就可以工作,但如果我只指定其中一个,它就会抛出一个错误。我使用的是SqlMapper的.NET3.5,这不是我见过的东西。我可以看一下,但是堆栈跟踪真的很有用,你确定db是非空的吗?
var builder = new SqlBuilder();

var sql = builder.AddTemplate("select * from table /**where**/ /**orderby**/");

 builder.Where("a = @a", new { a = 1 })
        .OrWhere("b = @b", new { b = 2 });