1

約100個のテーブル、50個のストアドプロシージャなどを含むデータベース(SQL Server 2008)がある場合、それは非常に優れた実績のある設計になっています。そして、いくつかのアプリケーションで使用する非常に便利なモデルがすでにあるとしましょう。これは、データベース構造を反映するクラスのセットです。つまり、データベースがあり、モデルを作成したくないし、モデルがあり、データベースを作成したくないのですが、それでもEF5.0の使用に熱心です。これが私の質問です。それらの1つを再作成せずに、既存のデータベースを既存のモデルにマップする方法はありますか?私が考えることができる唯一のオプションは、CodeFirstアプローチを使用し、FluentApiを介してすべてのDbSetを作成し、データベース初期化子を同時にnullに設定することです。これは正しいです?

4

2 に答える 2

2

はい、あなたのアプローチは正しいです。ただし、データベースモデルがEFのデフォルトの命名規則(列名、リレーションなど)に従って構築されていることを確認する必要があります。
そうでない場合は、FluentAPIまたはモデルの属性を使用して、DbContextクラスの「従来とは異なる」モデルエンティティごとにマッピングをオーバーライドする必要があります。私はEF5を試していませんが、プラグ可能な規則
をサポートしているはずです。したがって、慣例がデフォルトでEFによって認識されない場合は、それらを使用してみてください。 また、遅延読み込みを有効にするために、関連付けられたプロパティがモデル内で仮想であるかどうかを確認することもできます。

于 2012-09-14T07:51:47.073 に答える
1

私は2つの戦略を考えることができます:

  1. データベースからエンティティを生成し、構成クラスまたは中間クラスを使用して、モデルがエンティティと通信できるようにします。
  2. モデルをPOCOクラスとして使用します。次に、モデルを適合させて、このための前提条件に準拠させる必要があります。

多くのストアドプロシージャを使用しているため、データベースファーストアプローチが最適なIMHOです。それらをマッピングする方法については、こちらをご覧ください。

于 2012-09-14T08:00:56.857 に答える