Dapper.Netで動作しないパラメータ

.net c# dapper mysql

質問

リンクからSqlMapper.csファイルをダウンロードしまし

ちょっと混乱しているけど。パラメータを使用するたびに、同じ文字列データを使用していると確信できますが、クエリは空のコレクションを返します。

データの抽出に使用されるコードスニペットを次に示します。

using (PhoenixConnection connection = new PhoenixConnection(Open: true))
{
    //this example works, returns 1 token object
    string queryWorks = @"Select AccountName, AccountToken from btsource.accounts
    where AccountName = 'RekindledPhoenix'";

    // replaces 'RekindledPhoenix' with a parameter, returns empty collection
    string queryDoesnt = @"Select AccountName, AccountToken from btsource.accounts 
    where AccountName = @AccountName";

    var tokenList = connection.Query<TokenRequest>(queryWorks);
    var tokenList = connection.Query<TokenRequest>(queryDoesnt, new { AccountName = "RekindledPhoenix" });
    return tokenList.FirstOrDefault();
}

ここで私のクラスは私が使っている...

public class TokenRequest
{
    public string AccountName { get; set; } //`AccountName` VARCHAR(50) NOT NULL
    public long AccountToken { get; set; } //`AccountToken` BIGINT(20) NOT NULL
}

そして、ここに私のPhoenixConnectionオブジェクトのラッパー関数があります。

public IEnumerable<T> Query<T>(string Query, dynamic Parameters = null)
{
    return _connection.Query<T>(Query, (object)Parameters);
}

私はもう試した:

  • mysqlのテーブル名と値を二重にチェックする
  • 動的以外のものを使用するようにラッパーを変更する(機能しなかった)
  • 接続開いていることを確認しています
  • 生のmysqlConnectionオブジェクト、commandtextなど

私は何が欠けていますか?

パラメータには特別な設定がありますか?

編集:

生のMySqlConnectionパラメータを使用するとよりうまく動作し? @ではなく、Dapperとはまだ動作しません。

Dapperには、疑問符は無視されているように見えるが、正規表現( [@:] )文でパラメータを抽出する特定の行があることに気づいた。期待される結果を得るために私は何を変えるべきですか?

受け入れられた回答

私はその問題を発見した。未処理のMySqlConnectionオブジェクトを使用してクエリを実行した後、なぜ@記号が私のステートメントのいずれにおいても機能しなかった理由の検索ができました。過去に私はいつも使ったことがあり?ですから、この行動は私には奇妙でした。

SqlMapper.csの変更

次の@記号をaに変更します? (およその行番号で)

1863行目: if (identity.sql.IndexOf(" " + prop.Name, StringComparison.InvariantCultureIgnoreCase) < 0

行1831: return parameters.Where(p => Regex.IsMatch(sql, "[ :]" + p.Name + "([^a-zA-Z0-9_]+|$)", RegexOptions.IgnoreCase | RegexOptions.Multiline));

私の問題を解決!



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ