2016-04-08 5 views
2

これは私のアプリケーションのモデルです:エンティティフレームワーク1

public class Email 
{ 
    public int Id {get; set;} 

    public string Content {get; set;} 

    public string Address {get; set;} 
} 

私は、電子メール(Eメールのチェーン - 応答)に対する応答にオプションを追加することが次のようになります?:

public class Email 
{ 
    public int Id {get; set;} 

    public string Content {get; set;} 

    public string Address {get; set;} 

    public int? PreviousEmailId {get; set;} 

    public virtual Email PreviousEmail {get; set;} 

    public virtual List<Email> Responses {get; set;} 
} 

応答メールは、別の電子メールに応答することができ、その..にちょうど電子メールアプリケーションのように

は、私は、電子メールを取得し、絵馬のすべてを表示するための可能性を持つようにしたいですそれは私のクライアントに連鎖と呼ばれています。 実際の電子メールアプリケーションと同様に、電子メールを削除するときは、すべてのチェーンも削除する必要があります。

私はどのようにモデルを定義すべきか教えていただけますか(私は最初にEF 6コードを使用しています)。どのように関係を定義する必要がありますか? ベストプラクティスは何ですか?

他の電子メールアプリケーションの仕事と同様の概念です。

ありがとうございます!あなたのケースでは、あなたが親電子メールへのオプションの参照を格納するために、「自己関係」再帰的な関係を呼ばれた提案と同じ「前のメール」のように:

+1

役立つことを願っています。 – juharr

答えて

0

あなたは

最初のソリューション二つの方法により、この問題を解決することができます従い

public class Email 
{ 
    public int Id {get; set;} 
    public int? PrevousEmailId {get; set;} 
    // other properties 

    public virtual Email PreviousEmail{get;set;} 
} 

第二の溶液を次のように例えば同じ時間と再帰的な関係やグラフリレーションシップのその一般解で多数の受信者への応答にあなたをできるようになります別のテーブルでリレーションを格納します:

public class Email 
{ 
    public int Id {get; set;} 
    // other properties 
} 

public class EmailResponse 
{ 
    public int EmailId {get; set;} 
    public int PreviousEmailId {get; set;} 

    public virtual Email Email {get; set;} 
    public virtual Email PreviousEmail {get; set;} 
} 

私は、これは私はあなたがPreviousEmialId`は `int型であることを`たいと思っています? `いくつかの電子メールが応答ではありませんので、「前」の電子メールを持っていないので、あなた

+0

2番目のアプローチでは、すべての回答を含むメールをどのように受け取ることができますか? –

+0

電子メールIDは、以前の電子メールIDで応答した新しい電子メールです。すべての応答を含む電子メールを取得するには、EmailResponses.Where(t => t.PreviousEmailId = id)を使用します。idは電子メールのIDですその反応を得たい – Monah

関連する問題