[英]Subsonic query: issue with the produced query
亞音速查詢出現問題。 關鍵是,我有一個視圖,我想查詢它的數據以產生類似以下SQL語句的內容:
select *
from myView
where (col1 like '%a%' or col2 like '%a%' or col3 like '%a%')
and col4 = 1 and col5 = 2
但是,提交給數據庫的查詢是這樣的:
select *
from myView
where col1 like '%a%' or col2 like '%a%' or col3 like '%a%'
and col4 = 1 and col5 = 2
有沒有辦法做像fisrt查詢一樣的事情?
請注意,我正在使用.net 2.0和subsonic 2.2
先感謝您。
即使這樣做,亞音速規則!
您需要使用約束表達式 : WhereExpression
, AndExpression
, OrExpression
, EndExpression
。
“ WhereExpression”(或“ Or / AndExpression”)之后的所有內容都將用括號括起來。 您可以使用“ CloseExpression()”關閉表達式,或者如果另一個表達式已啟動(如上述OrExpression)或查詢結束,它將為您關閉。
另請參閱: 使用嵌套的Where / And / Or 。
如果您發布當前代碼,也許我可以給出更具體的答案,但是基本上您必須啟動WhereExpression
。 例如這樣的代碼:
var usersQuery = new Select(new SubSonic.TableSchema.TableColumn[] { User.UserIdColumn, User.NameColumn })
.From(User.Schema)
.WhereExpression(User.UserIdColumn.ColumnName).IsEqualTo(1).Or(User.UserIdColumn).IsEqualTo(2)
.CloseExpression()
.And(User.NameColumn).Like("a")
給出如下查詢:
SELECT [dbo].[Users].[UserId], [dbo].[Users].[Name]
FROM [dbo].[Users]
WHERE ([dbo].[Users].[UserId] = @UserId0 OR [dbo].[Users].[UserId] = @UserId)
AND [dbo].[Users].[Name] LIKE @Name
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.