首页 新闻 会员 周边

使用fluentdata ORM的时候用querymany<T>查询数据,系统报 指定的转换无效。

0
悬赏园豆:5 [已解决问题] 解决于 2018-11-14 16:23

使用fluentdata ORM的时候用querymany<T>查询数据,系统报 指定的转换无效。但是查询条件不同有时候又可以正常查询

西码的主页 西码 | 初学一级 | 园豆:194
提问于:2018-07-18 21:39
< >
分享
最佳答案
0

你的代码有问题,改成下面的这样:

return Db.Context.Sql(string.Format("select * from {0} where dw=@0 and indexId in @1",tblname),dw,strIds).QueryMany<IndexData>()

收获园豆:5
多啦A梦的弟弟 | 初学一级 |园豆:46 | 2018-07-19 09:49

你string.format有错误吧,把{1}改为@0?

西码 | 园豆:194 (初学一级) | 2018-07-19 10:45

@西码: {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梦的弟弟 | 园豆:46 (初学一级) | 2018-07-20 08:24

@多啦A梦的弟弟: 嗯,多谢,不是参数传递的问题,问题我已经找到了

西码 | 园豆:194 (初学一级) | 2018-07-24 15:38
其他回答(1)
0

数据库字段数据不匹配

西码 | 园豆:194 (初学一级) | 2018-07-24 15:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册