修改sql表达式

时间:2016-08-22 08:29:51

标签: c# mysql ormlite-servicestack

将此Sql表达式作为输入参数:(假设无法修改此输入参数的生成方式)

Db.From<Contact>().Where(C => C.Email != null).Or(C => C.Reference != null);

该方法需要附加另一个条件,例如

exp.And(C.UserId == Session.UserId);

但是,无论现有条件如何,UserId条件都必须为true。但是因为原始的Sql Expression使用了&#34; Or&#34;不强制执行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

任何人都有任何想法?

编辑: 到目前为止,唯一有效的方法是在原始Sql表达式的Where子句之前和之后将WhereExpression hack to add()。希望有更好的方式。

1 个答案:

答案 0 :(得分:0)

.Where(C => C.UserId == Session.UserId)