2015-06-15 70 views
2

我試圖使用dapper執行以下查詢,但它總是返回一個空的結果集。首先,我試圖刪除WHERE條款,以隔離問題,但沒有奏效。之後,我在SELECT子句的C.NAME列中添加了一個別名,但無效。使用JOIN子句查詢總是返回一個空結果集使用Dapper

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 
+1

此查詢是否可以工作在SQL Management Studio中傳遞特定參數時? – Kamo

+0

你好@Kamo!是的,它的工作原理。我正在使用Firebird數據庫和'MiTeC Interbase查詢'來直接訪問和查詢目標數據庫。 –

回答

1

所以,我把這個放在一邊,去做別的事情,在我回來試圖解決我的問題後,一切工作正常。我沒有改變我的代碼中的任何內容,並且現在令人驚訝地發現它的工作。

我不知道是否有可能在我的MiTeC Interbase Query中掛起的事務阻止我查看數據庫中的當前記錄。我試圖再次模擬它,現在它總是返回我需要的記錄(比沒有更好,嘿嘿)。

爲了便於說明,使用字符串作爲返回數據類型是完美的,可以在SQL參數中簡單連接到Query方法或根本不使用別名作爲返回列(只有當所有列匹配你的C#屬性名稱,或者你只是有一個指向像我這樣的字符串的列)。

1

說實話我不知道,如果你使用的是小巧玲瓏的正確,因爲您選擇命名列,它映射到簡單string - 我相信Dapper沒有看到'Name'屬性默默地失敗。我想你應該嘗試使用強類型對象Query<T>或使用Query<dynamic>來避免不必要的類創建。

+0

你好,再來Kamo!我直接使用字符串,因爲它在我當前的上下文中更有意義。但即使使用動態或使用具有「名稱」屬性的自定義對象,我也無法使用它。 –

相關問題