SQLクエリを引数として取り、結果としてデータを与える関数を書きたいと思います。したがって、この関数が結果として普遍的な構造を与えることを望みます。戻るための最良の方法かもしれませんDataTable
かSqlDataReader
?
その後、それらからデータを抽出し、特別なタイプ (異なるクラスのモデル) のオブジェクトに配置しますか?
これにはいくつかのパターンが存在する可能性がありますか?
SQLクエリを引数として取り、結果としてデータを与える関数を書きたいと思います。したがって、この関数が結果として普遍的な構造を与えることを望みます。戻るための最良の方法かもしれませんDataTable
かSqlDataReader
?
その後、それらからデータを抽出し、特別なタイプ (異なるクラスのモデル) のオブジェクトに配置しますか?
これにはいくつかのパターンが存在する可能性がありますか?
値をオブジェクトに直接返すことができます。ただし、最終的にはそれらを何かにマップする必要があります。
通常、この種の「一般的な」用途では、すべてが文字列として転送されます。最終的に別の場所で使用されるまで、JSON があらゆる場所である種の文字列にシリアル化される方法のようなものです。
DataTable を使用するか他のものを使用するかにかかわらず、最終的にはそのデータを有用なものに変換する方法に完全に依存することになるため、実際には問題ではありません。
その方法についてさらに詳しい情報が必要な場合は、http://en.wikipedia.org/wiki/NoSQLページをご覧ください。
Martin Fowler は、今年初めにスキーマレスと NoSql に関するプレゼンテーションを行いました。興味深いと思われるかもしれません。 http://www.youtube.com/watch?v=8kotnF6hfd8
ただし、ここで他の回答のいくつかをエコーし ますが、おそらく「一般的な」または「普遍的な」ことをしないことを主張します。システムを確実にやりたいことに適合させ、必要に応じてシステムを変更するために、前もっていくつかの作業を行ってください。
It sounds like you're just starting out. You may want to consider an ORM like Entity Framework Code First or NHibernate, or a MicroORM of which there are too many to list, rather than just running bare SQL against a db.
I find EF Code First to be great for beginners.
ORMs let you define classes that map to the tables in your database, and ask for lists of those objects explicitly (solving the problem of what to return).
戻り値の型としてc# dynamicを使用できます。Dapperを ORM としてお勧めします。高速で使いやすく、クエリからダイナミクスを返す機能があります。「クエリを実行して動的オブジェクトのリストにマップする」セクションを参照してください。