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 });