【发布时间】:2016-12-28 17:12:44
【问题描述】:
将此 Sql 表达式作为 输入 参数:(假设无法修改此输入参数的生成方式)
Db.From<Contact>().Where(C => C.Email != null).Or(C => C.Reference != null);
该方法需要附加另一个条件,例如
exp.And(C.UserId == Session.UserId);
但是,无论任何现有条件如何,UserId 条件都必须为真。但由于原始的 Sql 表达式使用“或”,因此未强制执行 UserId 条件。
所以最终的 Sql 应该是这样的:
SELECT * FROM Contact WHERE (Email IS NOT NULL OR Reference IS NOT NULL) AND UserId == 12
此刻生成的Sql如下:
SELECT * FROM Contact WHERE Email IS NOT NULL OR Reference IS NOT NULL AND UserId == 12
有人有什么想法吗?
编辑: 到目前为止,唯一可行的方法是破解 WhereExpression 以在原始 Sql 表达式的 Where 子句之前和之后添加 ()。只是希望有更好的方法。
【问题讨论】:
标签: c# mysql ormlite-servicestack