多くのパラメータを持つinsert文を書くためのエレガントな方法はありますか? DBに保存する必要がある20個のフラグの他に、20個のフラグと共に挿入する必要があるその他の情報もあります。その挿入物のための30のパラメータを持つメソッドを書くのは時間の無駄ですが、今まで私はうまくいかないかもしれない他のアイデアを考え出していません。多くのパラメータを持つC#sqlの挿入
答えて
これらのパラメータをすべてオブジェクトに配置し、そのオブジェクトをメソッドに渡すことができます。
エンティティを表すクラスを作成し、そのクラスのインスタンスを渡すのが標準的な方法です。
これにより、検証、プレゼンテーションなど、永続性を持つ可能性のある他のメソッドに簡単に渡すことができます。
なぜdownvote? – RedFilter
は、SQLクエリのさらなる処理のためdatalayerにインスタンスを渡し、サチンに同意しますがクラス内に必要SqlParametersのリストをカプセル化し、
。
getFieldsなどのメソッドを公開するIinsertableなど、データベースに挿入できるオブジェクトのタイプを表すInterfaceを作成できます。これで、このインタフェースを実装するエンティティを作成します。
これらのエンティティでは、IFCertableをパラメータとして受け入れるジェネリックメソッドを作成できます。このメソッドは、ループ内でgetFielsメソッドを使用して挿入されるすべてのフィールドを照会します。これにより、エンティティのあらゆる種類のコードを再利用できるようになり、地獄のようにきれいになります。
私のSqlBuilderクラスを使用します。パラメータの作成や呼び出されたことについて心配することなく、パラメータ付きクエリを書くことができます。
var bldr = new SqlBuilder(myCommand);
bldr.Append("SELECT * FROM CUSTOMERS WHERE ID = ").Value(myId, SqlDbType.Int);
//or
bldr.Append("SELECT * FROM CUSTOMERS NAME LIKE ").FuzzyValue(myName, SqlDbType.NVarChar);
あなたが好きなだけのフラグを持つことができます。ランタイム値をクエリに含めるたびに、Value()を呼び出してください。パラメータの作成は隠されていて、きれいなSQLクエリが残っています。
SqlBuilderクラスのコードがどのようにhere
- 1. 多くのパラメータを持つデータベースに挿入
- 2. 多くのヌル値を持つレコードをkdbに挿入する
- 3. 1つに多く挿入多くの多く1つのフィールドに
- 4. c#のパラメータを持つ動的SQLクエリ
- 5. Ruby On Rails:多くのパラメータを持つ未許可のパラメータ
- 6. C#SQLストアドプロシージャ(挿入) - パラメータを渡してパラメータを取得する
- 7. 挿入多くの行
- 8. 多くのパラメータ/修飾子を持つPHP関数を書く
- 9. C++ 11スレッドプール - 入力パラメータを持つタスク
- 10. Laravel 1対多の関係を持つレコードを挿入
- 11. 多数の列を持つ表にデータを挿入する
- 12. 多くのページにカスタムテキストを挿入
- 13. イオン3多くのデータを挿入
- 14. フラスコSQLAlchemyの多くを挿入
- 15. どちらが速いですか...多くの単一文を挿入するか、多くの値を持つ挿入ステートメントですか?
- 16. EF 4.0多対多の関係を持つエンティティを挿入する
- 17. 多くのパラメータ(python)を持つ関数を最大化
- 18. C++の子のパラメータより多くのパラメータを持つ親コンストラクタを呼び出す
- 19. より多くのパラメータを持つ再帰
- 20. より多くのパラメータを持つAjax AutoCompleteExtender
- 21. 一括挿入/挿入多くのPlay Framework、ReactiveMongoで
- 22. 最後のIDを持つリレーショナルデータをSQL Server 2008に挿入
- 23. 多対多リレーションシップを持つsqlクエリ
- 24. 別のテーブルから挿入レコードを持つとユーザーdata..SQLサーバ
- 25. IDに空の値を持つSQL挿入
- 26. SQL - 特定の値を持つ挿入とサブクエリ
- 27. 複数のwhere節を持つSQL挿入
- 28. 3つの関係を持つSQL多対多の関係
- 29. lessパーサーにパラメータを持つ.lessファイルを挿入する方法
- 30. Guiceで異なるパラメータを持つ同じクラスを挿入
あるそれは「時間の無駄」とは?それは醜いデザインの選択かもしれないが、私はそれがどのように時間を無駄にしているのか分からない。 –
私はあなたがORMを探していると思います。私は可能ならばこれを選ぶだろう。 –
"フラグ"と言うと、おそらく '[Flags] enum MyFlags {...}'で表現できる実装を意味しますか?そうであれば、1つの変数でこれらの20個のフラグを簡単に表現できます。 –