エンティティ フレームワークは、列と名前が同じ場合、EDMX でマップされたテーブルが実際にデータベースのビューであるかどうかを気にしますか?
データベースを変更する必要があるアプリケーションに取り組んでいますが、新しいテーブル構造で更新された EDMX をすぐに展開できない可能性があります。私の同僚は、データベース内の各テーブルにビューを追加し、テーブルではなくビューにマップするように EDMX を更新し、挿入/更新/削除操作にストアド プロシージャを使用したいと考えています。そうすれば、テーブル構造を変更する必要がある場合でも、ビューの列とプロシージャのパラメーターを同じに保つことができ、EDMX ファイルは影響を受けません。後でいずれかを変更したい場合に備えて、すべてのテーブルをミラーリングするビューを持つのはやり過ぎのように思えるので、別の解決策を探しています。
1 つのアイデアは、EDMX をテーブルにマップしたままにすることです。後でテーブルを変更する必要がある場合は、テーブルの名前を変更し、同じ名前と同じ列でビューを作成できます。
実験を試み、テーブル MyTable を作成し、EDMX にマップしました。次に、MyTable の名前を tblMyTable に変更し、tblMyTable からすべてを選択する MyTable という名前のビューを作成しました。EDMX はまだテーブルにマップされていると認識していますが、MyTable エンティティの選択または更新に問題はありませんでした。テーブルを分割してビューでデータを結合し直す必要がある場合、更新は機能しませんが、必要に応じて INSTEAD OF トリガーを使用してそれを処理できるはずです。
このアプローチに問題はありますか? これがこれまでに行われたのを見たことはありませんが、私が行った限られたテストから、うまくいくように思えます。これが主要なデータベースの変更に対して機能しないことはわかっています。テーブルを完全に削除したい場合は、アプリケーション コードを変更する必要があります。エンティティ フレームワークがこれを完全にサポートしない技術的な理由があるかどうかを知りたいだけです。