私が取り組んでいるアプリでは、Linq to EF を広範囲に使用しています。マルチテナントなので、さまざまな顧客がすべてのデータをすべて同じデータベースに保存します。
一部の顧客は、カスタム レポートを希望しています。理想的には、これらのカスタム レポートの定義は顧客に対してデータベースに保存されます。これらのレポートをメイン コードにハードコードすることは現実的ではないためです (すぐに手に負えなくなります)。
私はこれを過去に SQL 文字列を保存してから解決しましたcontext.SqlQuery(myReportSQL)
。それは十分に機能します。
2つの考え:
現時点では、SQL 文字列をお客様が編集することはできません。間違った種類のクエリが実行されるのを避けるために、内部で管理されます。これを顧客にどのように説明することをお勧めしますか? クエリ ビルダー インターフェース (プラグインの提案は歓迎)? SELECT ステートメントのみを許可するものはありますか?
より良いアプローチは、LINQ to EF クエリを使用することです。これは、SELECT のみであることを確認する方が簡単であり、最後に追加の WHERE をチェーンして、適切なデータのみを取得できるようにし、読みやすくするためです。
では、オプション 2 では、これをデータベースに保存し、効果的に「評価」するにはどうすればよいでしょうか。
ある程度役立つDynamic LINQライブラリを見てきましたが、それが古くなり、ドロップされる可能性があるか、EF6などをサポートしていないのではないかと心配しています.