現在のデータベース管理システムを Entity Framework に移行した場合の影響を実際に分析しています。現在 (移行前) の時点で、この製品は、エンド ユーザーが管理インターフェイスから ASP .Net アプリケーション内に独自のオブジェクト タイプを作成できるようにします。これらのオブジェクト タイプは、フィールドとテーブルの両方について、DB テーブルの作成/削除/更新に変換されます。通常、1 人のユーザーがエンドユーザー インターフェイスから新しい MyCar オブジェクト タイプを作成し、いくつかの属性を作成し、検証が完了すると、新しい値を作成できます。これは明らかに、新しい MyCar テーブル、2 つのフィールド、および新しい挿入としてデータベースに反映されます。
私が抱えている主な質問は、Entity Framework を統合して、最初のステップとして Linq クエリを介してこれらのテーブルをクエリできるようにする方法に関連しています。理想的には、コード ファーストまたはモデル ファーストのアプローチを使用する必要があることはわかっていますが、段階的に進めたいと考えています。
いくつかの調査を行った後、次のことがわかりました。
- Entity Framework は、内部メタデータを直接更新する機能を提供しません。
- 動的な Type 作成を利用して、Entity Framework がコード ファースト モデル (実行時ですが、コード ファーストでもあります :-)) に基づいており、動的なクエリワードを使用すると、遅延バインディングを通じて属性を取得できます。このlinqを参照してください。
私が全体像を提供したことを願っています。何か不足している場合、および 2 番目の箇条書きで説明されているアプローチが私の問題に対する正しい答えであると思われる場合は教えてください。課題の 1 つは、フィールドまたは型を作成できることです。リフレクションを使用して実行時に作成された型を処理する必要がある場合、それを行うことはできません。この場合、appdomains を使用できます (そして、リセットを行う必要があるたびに新しいものを再作成します) が、これにより新しい問題が発生する可能性があります (アクセシビリティ/パフォーマンス/他の appdomain で定義された型とのエンティティ フレームワークの非互換性 / ...)。
私は IQToolkit をよく知っており、実行時に .Net 型を導入しなくても簡単にメタデータを再定義する方法を知っています。
どんな提案でも大歓迎です!