私は次のプロジェクトでEntity Framework 4.1を使用する予定ですが、それについては良い方法を見つけることができません。つまり、エンティティがWebサービスを介して移動する多層アプリケーションを構築し、できるだけクリーンな状態に保つために、自己追跡エンティティではなくPOCOを使用したいと考えています。また、エンティティのベースに使用されるSQL 2008データベースが既に存在します。DbModelBuilderに.edmxをロード
私がこれまでに(とりわけhttp://msdn.microsoft.com/nl-nl/magazine/hh148150%28en-us%29.aspxにジュリーラーマンの記事から)何を読んでから、ようです:あなたはデータベースの最初のアプローチを使用する場合は、編集する美しい.edmxを取得
- 私の状況では役に立たないPOCOではなく、永続性を認識するオブジェクトで終わるでしょう。
- コードファーストアプローチを使用する場合、「ADO.NET DbContextジェネレータ」は部分的にのみ役立ちます。エンティティは.edmxから生成されますが、外部キーとカーディナリティを取得するために必要なコードは生成されません。これはコードがすぐに機能しないことを意味します(-編集、真ではない、以下の私の投稿を参照してください)。
- a)あなたのPOCOのデータ注釈を使用してください。それはPOCOをデータベース情報で汚染し、またEntityFrameworkアセンブリに依存関係を作成するためです。
- b)DbContext.OnModelCreatingに渡されたDbModelBuilderを使用して、正しい外部キー、マッピングなどの情報(つまり、「流暢な」API)を設定します。また、APIが「流暢」であっても、既存のデータベースと一致するようにすべての情報を正しく設定することはかなり難しい(おそらくは維持不能である)(詳細はhttp://sessionfactory.blogspot.com/2011/04/conventions-in-entity-framework-41.htmlを参照)。
私は、それが他の方法で回避を使用するように設計されたため、「DbModelBuilderウェイ」はそれほど労力を必要とする理由があることを認識:あなたは、エンティティの定義からデータベースを生成することになっていますすべてのエンティティを調整して、既存のデータベースに一致するようにしないでください。しかし、最終的には、「DbModelBuilder-way」がデータベースのメタデータを持たない純粋なPOCOの最良の結果を生むように思えます。
さて、このすべて言った、私の質問は:外部キー、列マッピングおよびその他の情報は、必要にdoens'tよう
は誰もが、DbModelBuilderに.edmxをロードする方法を知ってい流暢なAPIを通して手で指定することができますか?
データベースの最初のシナリオと同じようにマッピングを視覚的に編集でき、必要なすべてのメタデータがDbModelBuilderに保存されているため、きれいなPOCOを取得できるので、これは両方の世界で最高のものだと思います。
リンクをありがとう、私は間違いなくそれらを見ています。 – Astrotrain