次の簡単なクエリで Dapper orm を使用しようとしています。
var sqlString = new StringBuilder();
sqlString.Append("select a.acct AccountNumber,");
sqlString.Append(" b.first_name FirstName,");
sqlString.Append(" b.last_name LastName,");
sqlString.Append(" a.rr RrNumber,");
sqlString.Append(" c.addr1 AddressLine1,");
sqlString.Append(" c.addr2 AddressLine2,");
sqlString.Append(" c.addr3 AddressLine3,");
sqlString.Append(" c.addr4 AddressLine4,");
sqlString.Append(" c.addr5 AddressLine5,");
sqlString.Append(" c.addr6 AddressLine6,");
sqlString.Append(" c.addr7 AddressLine7,");
sqlString.Append(" c.addr8 AddressLine8 ");
sqlString.Append("from (pub.mfclac as a left join pub.mfcl as b on a.client=b.client) ");
sqlString.Append("left join pub.mfclad as c on a.client=c.client ");
sqlString.Append("where a.acct = '@ZYX'");
var connection = new OdbcConnection(_connectionString);
var result = connection.Query(sqlString.ToString(),
new
{
ZYX = accountNumber
});
ただし、存在することがわかっているaccountNumberでこれを実行すると、dapperは何も返しません。そのため、引用符を削除して、パラメーターが実際にアカウント番号に置き換えられていることを確認しようとしましたが、サーバーから返されたエラーは、「@ZYX」に関する構文エラーを示しています。つまり、ダッパーはパラメーターを指定された値に置き換えていません。なぜこれが起こっているのですか?そこにある限られたドキュメントから、これは「うまくいく」はずです。
編集1
これを機能させることができませんでした。回避策として、string.format を使用してパラメーターを挿入します。