2012-01-08 8 views
2

エンタープライズアプリケーションでEntity Frameworkを使用する方法についていくつか質問があります。エンタープライズアプリケーションでEntity Frameworkを使用する方法

まず、私は何年も前からADO.NETで作業しています。オブジェクトを使用して、データベースプロバイダから取得したデータを反映させます。 私は何かを変更したり、データベースに何かを挿入したいときはいつも。

私はちょうどSave()メソッドを呼び出して、ジョブを完了します。 すべてのオブジェクトには、DataAccessレイヤーへのクエリを管理するDatabaseManagerがあります。例

public class Article{ 
    public int ID{get;set;} 
    public string Title{get;set;} 
    ..... 
    public bool Save(){ 
     if(this.ID == -1){ 
      return new ArticleDatabaseManager().InsertArticle(this); 
     }else{ 
      return new ArticleDatabaseManager().UpdateArticle(this); 
     } 
    } 
} 
public ArticleDatabaseManager : DatabaseManager 
{ 
    ...ADO.NET code 
} 

については 私は同じarchitecturを使用するか、私は自分のアプリケーションでこのオブジェクトを使用するすべての方法を変更する必要があるかどうかは知りません。 DatabaseManagerがない古いのように同じ仕事をする

public class Article{ 
    public int ID{get;set;} 
    public string Title{get;set;} 
    ..... 
    public bool Save(){ 
     if(this.ID == -1){ 
      return new ArticleDatabaseManager().InsertArticle(this); 
     }else{ 
      return new ArticleDatabaseManager().UpdateArticle(this); 
     } 
    } 
} 

それぞれのDatabaseManager内のエンティティあるいはEntitySQLするためにいくつかのリンクを実装します。

は、私は私が上記のようなものを作成する場合、私はこのような何かを行うことができます思いました。 エンティティオブジェクトから取得した値を持つビジネスモデルを入力します。 それから、私は以前と同じように仕事をすることができました。ちょうどいつでも私はEntityFrameworkを介してデータベースに通信しています。

私は上記のようなものを実装する必要がありますか?

エンティティオブジェクトに以前のビジネスオブジェクトを継承するだけでいいですか? EX: パブリッククラス条:ArticleEntity {検証など ため //いくつかのプロパティ}

Sould私は完全に違うものを使うのか? 私はちょっとdo not knwo:/

私は他のORMの経験はありません。手書きの "ORM"システムを作成してください。

ありがとうございました。 私は私の英語の不足のため申し訳ないと私は単一の質問にあまりにもmutch尋ねることを知っている... しかし、私は国を変更するように私のような恐竜のために他の1つの技術から移動することです:/

+1

投稿ごとに1つの質問のみをお願いします。 「THIS IS DATABASE ...」セクションを別の質問に移動します。 –

+0

申し訳ありませんが、私はこの問題がエンティティフレームワークのナビゲーションから生じると考えていました。私はそれを削除した。 :) – Sanosay

答えて

5

少なくともEFチュートリアルを試してみましたか?そうでない場合は、EFに関するすべてのことを1つの回答で説明することはできないため(複数でも - チュートリアルや学習教材を置き換えることはSOの目的ではありません)、それを行う時間です。それはあなたのデータベースマネージャーに関連するすべてのものについてかなり明確な答えを与えるはずです。

一般的にあなたが知っていたことは、アクティブなレコードパターンに非常に近いものです。オブジェクトにデータベースからオブジェクトを取得するために使用される静的メソッドもある場合は、アクティブレコードパターンです。 EFを使用する場合、通常はこのパターンを使用せず、データベース・マネージャーは必要ありません。 EFはコンテキストと呼ばれるクラスをベースに構築されており、このコンテキストは使用しているすべてのエンティティのデータベースマネージャとして機能します。エンティティに保存と検索メソッドを追加することは可能ですが、それは懸念の分離を破り、エンティティをEFと永続性に大きく依存させます(傾向はそれらを完全に独立にすることです= POCO)。

エンティティからカスタムクラスを派生させないでください。EFは派生型を使用することはできません。 EFにマッピングされたエンティティをクラスとして使用し、すべてのカスタムプロパティとメソッドを直接このクラスに追加します(コードジェネレータを使用しない場合は、最初からそのクラスを作成することもできます)。生成されたエンティティの場合は、カスタムクラスを部分クラスに追加できます。 EFエンティティをオブジェクトとして使用しない場合は、手動で別のものへの変換を処理する必要があります(またはAutoMapperのようなツールを使用する必要があります)。

EFはXML列では機能しません。文字列として扱います。特に、いくつかの順序付けやフィルタリングにこれらのデータを使用する予定で、構造が固定されている場合は、それらを別のテーブル/エンティティとしてモデル化する必要があります。それが実際に構造化されたコンテンツ(動的構造を持つ)であれば、それをXML文字列として使用できます。

+0

はいフレームワークについてのEFチュートリアルと書籍を読んでいます。 しかし、私は多くの混乱を得た。それで私がここで尋ねた理由。 そして、あなたが最初に皮肉であったにもかかわらず、私はとても素敵な答えをくれました。 ありがとうございました:) – Sanosay

+0

http://code.msdn.microsoft.com/ASPNET-MVC-Application-b01a9fe8/sourcecode?fileId=25232&pathId=1337828505 これはEntityFrameworkの「正しい」使用ですDALを使用していること。 ありがとう – Sanosay

関連する問題