【发布时间】:2015-05-23 07:07:23
【问题描述】:
是否可以执行以下操作?我试过了,但是当它到达查询时,它只是说有一个空引用。
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});
我让 SqlBuilder 在 .net 3.5 中运行,但是当我这样做时:
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 });
我期待select * from table WHERE a = @a OR ( b = @b )
但我得到了:
我期待select * from table WHERE a = @a AND ( b = @b )
【问题讨论】:
-
请引用整个错误信息。
-
我没有立即看到任何错误;你有异常的堆栈跟踪吗?
-
@MarcGravell - 抱歉,Marc,我最初是在手机上输入的,没有原始错误消息。如果 x 和 y 不为空或 null,它可以工作,但如果我只指定其中一个,它会引发错误。我正在使用 .NET 3.5 的 SqlMapper。
-
嗯,这不是我见过的东西。我可以看,但是堆栈跟踪确实会有所帮助
-
你确定 db 是非空的吗?