1

我使用.CreateQuery(sqlStatement,parameterValues)從我的對象上下文中獲取數據。請注意,這是我用作字符串常量的實體SQL被傳入CreateQuery方法,而不是我的源代碼中的已編譯的LINQ查詢。實體SQL - 奇怪

這個效果很好。但也有一些重複的記錄...

ctx.CreateQuery<DbDataRecord>(@"SELECT record.home_city, record.home_stabb 
FROM Employees AS record 
ORDER BY record.home_city SKIP 0 LIMIT 15",prms); 

所以我認爲這將刪除重複的:

ctx.CreateQuery<DbDataRecord>(@"SELECT DISTINCT record.home_city, record.home_stabb 
FROM Employees AS record 
ORDER BY record.home_city SKIP 0 LIMIT 15",prms); 

完全一樣的語句,完全相同的對象範圍內。但是,當我添加DISTINCT修飾符時,我會看到下面的例外。我知道所有的列都是正確的,因爲第一條語句完美無缺。由於異常Jusjing,它似乎與ORDER BY子句有關。

有沒有辦法,我失去了一些東西?這對我來說沒有意義。

System.Data.EntitySqlException was unhandled by user code 
Message='record.home_city' could not be resolved in the current scope or context. Make sure that all referenced variables are in scope, that required schemas are loaded, and that namespaces are referenced correctly. Near member access expression, line 1, column 95. 
Source=System.Data.Entity 
Column=95 
ErrorContext=member access expression, line 1, column 95 
+0

我會把它留給其他人來提供原因,爲什麼這可能會繼續,因爲我不知道。但作爲一個可能的解決辦法,你有沒有嘗試過'SELECT record.home_city,record.home_stabb FROM Employees AS record GROUP BY record.home_city,record.home_stabb ORDER BY record.home_city SKIP 0 LIMIT 15' ...以防萬一有一些特定於DISTINCT –

+0

的翻譯/解析錯誤,我會嘗試。不幸的是,我提供的代碼來自概念證明,實際上使用了9列。因此不斷需要重新表達它們會有點古怪。不過,一個好主意。 SQL幾乎爲這兩種方法創建了相同的執行計劃。 –

+0

我同意,這將是klunky,我真的希望有人爲你解答爲什麼你的具體例子不起作用。有時候,你可以得到最好的解決方法,但希望這不是其中的一種。 –

回答

0

你可以試試下面,然後運行一個獨特的? 我知道不同是你面臨這個問題的主要原因,但至少你知道另一種方式去解決它。

ctx.CreateQuery<DbDataRecord>(@"SELECT VALUE record FROM Employees AS record 
ORDER BY record.home_city SKIP 0 LIMIT 15",prms);