2009-03-10 5 views
3

LINQ to SQLの実験を始めました。基本的にはLINQマッピングデコレータを使用してクラスを作成しています。これにより、db表スキーマのどの部分を自分のクラスに組み込むかを選択します。LINQ to SQLを使用するようなEntity Frameworkを使用できますか?

簡単な例:

private DateTime? _LocalCopyTimestamp = (DateTime)SqlDateTime.MinValue; 
[Column(Name = "recaLocalCopyTimestamp", Storage = "_LocalCopyTimestamp", CanBeNull = true)] 
public DateTime? LocalCopyTimestamp 
{ 
    get 
    { 
     return this._LocalCopyTimestamp; 
    } 
    set 
    { 
     this._LocalCopyTimestamp = value; 
    } 
} 

私が使用していないと(contraintsを投影するため、モデリングツールに頼ることを望んでいないよスキーマ変更の処理方法を、そこに既存のデータベース・スキーマがあり、それがあるので、午前あまりにもオーガニックで非厳密なビット)

スキーマ情報ファイルや多数の異なるコードファイルを含まなくても、この柔軟性をEntity Frameworkに持たせる方法はありますか?

複数の基になるテーブルを「使用する」クラスを作成することもできますか?

誰も私にこのことに関するドキュメントを教えてもらえますか?

答えて

8

エンティティフレームワークチーム "Model First"によって要求されている(C#クラスを記述してモデルを生成する)機能があります。 Entity Frameworkの現在の出荷バージョンには存在しませんが、次のバージョンの予定された機能です。 Entity Framework talks from PDCを見ると、この新機能のデモを見ることができます。現在のバージョンでは、 "多くの"マッピングファイルを書く必要はありませんが、必要なもの(EDMXファイル)はXMLでなければなりません。

はい、複数の基になるテーブルを使用するエンティティクラスを作成できます。これは「Entity splitting」と呼ばれます。リンクのステップバイステップの説明一般的に、Entity Frameworkは、LINQ to SQLよりも複雑なマッピングシナリオを多数サポートしています。

私は、デザイナーを使わずにEDMXを書いていることについて、Marc氏に完全に同意しなければならないのではないかと心配しています。デザイナーを使わずにEDMXを書くことは可能であるだけでなく、特定の面を超えるプロジェクトにとっては不可避です。この上のいくつかのポイント:初期の歴史(前RTM;「ObjectSpaces」)のほとんどのために

  1. Entity Frameworkのの、手動でXMLファイルを書き込むと、ツールを使用するための唯一の方法でした。設計者は最近の機能であり、Entity Framework自体よりもかなり安定性が劣ります。
  2. 複雑な型など、Entity Frameworkの特定の機能がありますが、これはデザイナではまったくサポートされていません。
  3. デザイナーでは、個々の列をマッピングしない、または外部キー関係のないマッピングテーブルなど、レガシーデータベースに必要な特定のマッピングシナリオはサポートされていません。
  4. (1)で言及したように、デザイナーはEntity Framework自体よりかなりバグが多いです。だから大規模なプロジェクトでは、おそらくデザイナーの間違いの後にクリーンアップする必要があります。
+0

ニースの答え、あなたが言ったことによると、次のバージョンを待つことが最善です。 – leppie

+0

あなたのデザイナーのポイントがすべて記載されています。私はレッピーにも同意します:次のバージョンのために持ちこたえています.-p MVPサミットで見て一日を過ごしました。現在の化身よりもうまくいっています。 –

+0

"エンティティフレームワークの歴史の大部分については... ...まあ、RTMの歴史のために、彼らはどちらも同じ年齢です... –

1

Entity FrameworkはEDMを使用してデータをモデル化します。これは、3つの複雑なスキーマファイル(ストレージ、概念、マッピング)のセットであり、最も一般的には、プロジェクト内のリソースとして格納されます(単一のEDMXファイルを使用して3つのスキーマファイルをすべて生成するデザイナを介して)。

この情報の帰属クラスはサポートしていません。 EDMを書く唯一の賢明な方法は、デザイナー(本質的に、あなたが嫌い​​なモデリングツール)を使用することです。

Reクラスは、複数の基になるテーブルを「使用」します。はい、コンセプチュアルレイヤ(つまりクラス)の単一のEntity Frameworkエンティティは、複数のストレージテーブルにまたがることができます。これは、いくつかの継承の例では特に便利ですが、フラットモデルでも(IIRC)を使用できます。これは、ストレージレイヤーと概念レイヤーの間の「マッピング」(最も一般的には、デザイナーのタブ上)で行います。