簡體   English   中英

使用 JOIN 子句查詢總是使用 Dapper 返回空結果集

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM