2013-10-31 51 views
3

我試圖運行一個類似的查詢:OrmLite和公共表表達式

sql = @"with t(id) as (select 1) 
select * from Project 
where id > (select id from t)"; 

var projects = this.Db.Query<Project>(sql).ToArray(); 

出於某種原因,OrmLite決定治療SQL作爲作爲「where」子句,那麼什麼最終運行的是一樣的東西這個:

select field1, field2 from project where with t(id) ..... 

它是否在查詢的起始位置查找「select」? 創建視圖的缺點 - 有沒有辦法與CTE運行查詢?

回答

5

使用db.Sql* API對原始的SQL查詢,e.g:

var projects = db.SqlList<Project>(sql); 
+0

啊哈!謝謝!所以查詢<>確實看看這個陳述? – Evgeni

+1

@Eugene右鍵[它們用於執行原始和未觸及的SQL](https://github.com/ServiceStack/ServiceStack.OrmLite/#new-apis-to-execute-custom-sql) – mythz