2011-07-08 5 views
2

現在、データベースビュー(複数のテーブルを結合)によってバックアップされているEFクラスがあります。それを更新可能にするには、クラスをデータベーステーブルによってバックアップするように変更する必要があります。私はEntity Framework 4.1 Code Firstを使用していますが、これらの関係を設定する方法を理解できません。EFコードファースト - 複数のテーブルを結合するエンティティ

簡略化するために、私は現在、カテゴリ名(Categoriesテーブル)とカテゴリタイプ名(CategoryTypesテーブル)を返すCategoriesクラスを持っています。これらは、私が現在使用しているデータベースビューにあります。私はViewModelに変更して、テーブルからこれらのフィールドを直接取り込み、適切に結合します。ユーザーがカテゴリ名を更新すると、EFは更新を適切に処理できるはずです(代わりにテーブルを更新するためです)。ビューの)。これを行う方法に関するヒント?

答えて

2

テーブルはテーブルです。これは単一のデータベースオブジェクトです。ビューを削除してテーブルに置き換える場合は、現在のテーブル(CategoriesCategoryTypes)を削除して、非正規化データを含む単一のテーブルを作成する必要があります。それはかなり悪い解決策であり、アプリケーション全体に問題を引き起こします。

説明を簡単にする:複数の表の結合によって作成されたビューを表に置き換えることはできず、ビューを更新可能にすることはできません。

明らかにビューモデルをデータベースに直接マッピングしているので間違っています。​​とCategoryTypesCategoryのロードにエンティティにマップし、それらをアプリケーションロジックのビューモデルに展開します(またはビューモデルを投影によってロードします)。ユーザーがビューモデルを更新すると、それを別のエンティティに分解して保存します。

+0

ありがとうLadislav!私たちは、これを可能な解決策として議論しましたが、確信が持てないほど新しいものです。だから、あなたの確認を得ることはいいです!さて、リファクタリングをオフに! – user835320

関連する問題