使用fluentdata ORM的时候用querymany<T>查询数据,系统报 指定的转换无效。但是查询条件不同有时候又可以正常查询
你的代码有问题,改成下面的这样:
return Db.Context.Sql(string.Format("select * from {0} where dw=@0 and indexId in @1",tblname),dw,strIds).QueryMany<IndexData>()
你string.format有错误吧,把{1}改为@0?
@西码: {0}是string.format的语法形式,@0是sql server的参数变量啊,你可以去网上搜索一下sql server参数化。
一般来说代码应该这么写:
return Db.Context.Sql(string.Format("select * from {0} where dw=@dw and indexId in @strIds",tblname)) .parameter("@dw",dw) .parameter("@strIds",strIds) .QueryMany<IndexData>()
这样写比较麻烦,FluentData有简写方式
return Db.Context.Sql(string.Format("select * from {0} where dw=@0 and indexId in @1",tblname),dw,strIds).QueryMany<IndexData>()
@0表示第一个参数化
@1表示第二个参数化
以此类推。
,dw,strIds是边长参数,也就是一个数组,数组的索引值跟@n是相对应的,也就是通过这种方式完成了参数化传递。
@多啦A梦的弟弟: 嗯,多谢,不是参数传递的问题,问题我已经找到了
数据库字段数据不匹配