[英]Sql Query with Dapper returns an empty result, but the request result from profiler is not empty
[英]Query with JOIN clause always returns a empty result set using Dapper
我嘗試使用 dapper 執行以下查詢,但它始終返回空結果集。 首先,我嘗試刪除WHERE
子句以隔離問題,但這沒有用。 之后,我在SELECT
子句中的C.NAME
列中添加了一個別名,但也不起作用。
private const string SelectClaims =
@"SELECT C.NAME FROM CLAIMS C
INNER JOIN USERS_CLAIMS UC ON C.ID = UC.ID_CLAIM
WHERE UC.ID_USER = @Id";
using (var conn = new FbConnection(connectionString))
{
var claims = conn.Query<string>(SelectClaims, new { user.Id });
return claims;
}
如果我在這里替換上面的查詢,一切正常:
SELECT NAME FROM CLAIMS
老實說,我不確定您是否正確使用 Dapper,因為您正在選擇命名列並將其映射到簡單string
- 我相信 Dapper 不會將 'Name' 屬性視為靜默失敗。 我想您應該嘗試使用強類型對象的Query<T>
或使用Query<dynamic>
來避免不必要的類創建。
所以,我把這個放在一邊,去做別的事情,在我回來嘗試解決我的問題后,一切都很好。 我沒有更改我的代碼中的任何內容,令人驚訝的是它現在可以正常工作。
我不知道我的 MiTeC Interbase 查詢中的待處理事務是否有可能阻止我查看數據庫中的當前記錄。 我嘗試再次模擬這個,現在它總是返回我需要的記錄(總比沒有好,呵呵)。
為了澄清起見,最好使用字符串作為返回數據類型,將 sql 參數簡單連接到 Query 方法,或者根本不為返回列使用別名(僅當所有列都與您的 C# 屬性名稱匹配時)或者您只有一列指向像我這樣的字符串)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.