当前位置: 代码迷 >> C# >> c# orm 框架 生成SQL语句有关问题
  详细解决方案

c# orm 框架 生成SQL语句有关问题

热度:496   发布时间:2016-05-05 04:36:54.0
c# orm 框架 生成SQL语句问题
我使用了一个C#的ORM框架,叫Kerosene.ORM,其中有一段能够生成类似SQL 语句如下

select * from table where id in (@0,@1,@2)

实际C#语句大概是:
repo.Where<Product>(x => x.Id.In(3,4,5));

问题在于,中间那个3,4,5必须直接声明成这种格式,框架才会生成上面的语句。
如果传入的字符串或者数组对象都不行。比如:
repo.Where<Product>(x => x.Id.In(productIdList.ToArray()));

这种就会生成如下SQL语句
select * from table where id in (@0)

[email protected] [3, 4, 5] 没法执行
不太懂这个该如何动态传入
请教大家,谢谢
------解决思路----------------------
你自己封装一层,用来解析你传入的合适为框架识别的合适,别总想着框架去适应你
------解决思路----------------------
你看看in 要你传的具体类型是什么
------解决思路----------------------
看样子param接受的是params 参数,理论上你传入IEnumable<T>会识别出来的啊
------解决思路----------------------
你把In对应的方法参数声明什么发出来呢
------解决思路----------------------
.In<int>(productIdList.ToArray())

或者猜测这个方法有泛型方法,显示声明T为int,而不是自动推断
------解决思路----------------------
concat 可以么
------解决思路----------------------
这种不成熟的框架连这么简单的东西都搞不定。
------解决思路----------------------
可以看看我使用的CodeSmith模板生成数据层
  相关解决方案