3
背景:我需要創造這樣的擴展方法自定義爲linqtohiberante做以下,HQL表達等效的數據類型
result.Where(p => p.MyIntColumn.IsLike('%100%'));
以便將輸出如下自定義SQL。
select * from orders where CONVERT(VARCHAR, MyIntColumn) LIKE '%100%'
我試圖通過如下所示延長BaseHqlGeneratorForMethod搭建的自定義表達式。
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
{
return treeBuilder.Like(treeBuilder.MethodCall("convert",
new[] { "stuck here", visitor.Visit(arguments[0]).AsExpression() }),
visitor.Visit(arguments[1]).AsExpression());
}
我需要能夠注入VARCHAR爲表達對MethodCall表達的參數列表。在上面的代碼片段中查看「卡在這裏」的文字。任何想法我怎麼能做到這一點。
在此先感謝
大黃蜂
我不得不延長了一點以促進'%100%',除此之外,這是完美的! – Illuminati
當我嘗試使用字節數組時,我得到'目前不支持類型爲Byte []'的元素:| – Sam