1

私は、dapper-dot-net が次のようなクエリでテーブル名を置き換えることができると予想していました。

connection.Query("SELECT * FROM @Table WHERE [Id] = @Id", new {Table = tb, Id = id});

ただし、テーブル名を置き換えないようです。それは予想される制限ですか?

4

1 に答える 1

5

"in" の 1 つの例外 (dapper がブードゥー教を提供する場合) を除いて、dapper は直接的な ADO.NET ツールであり、クエリを変更しません。本当の問題は、SQL でテーブル名をパラメータ化できるかということです。私が知っているすべてのデータベースで:いいえ、できません-したがって、それは無効です。Dapper はその問題を解決しようとはしません。

おそらくstring.Formatを検討してください。

  • SQL インジェクションを防ぐために正当なテーブル名をホワイトリストに登録する
  • テーブル名の周りに完全な[square brackets]表記を使用して、可能な名前の全範囲を許可する
于 2013-06-07T21:11:42.280 に答える