2012-05-01 5 views
1

注:これは前の質問の全体を書き換えたものです。モデル内のデータベースをどのようにクエリしますか?

私にはモデルがあります。

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

    public int SectionId { get; set; } 
    public virtual Section Section { get; set; } 

    public int Major { get; set; } 
    public int Option { get; set; } 

    public ICollection<Paragraph> Options 
    { 
     get 
     { 
      // What I'm trying to return is: 
      // 
      //  Section.Paragraphs 
      //  .Where(p => p.Major == Major && p.Option != Option) 
      //  .ToList() 
     } 
    } 
} 

これはone to many関係に関係しています。各Sectionには多くのParagraphsがあります。私が返そうとしているのは、MajorがエンティティのMajorと同じで、Optionが同じではない段落のリストです。基本的に。

Where(p => p.Major == Major && p.Option != Option) 

これについてのアドバイスはありますか?ありがとうございました。

+0

もっとコードが必要です。 OptionsコレクションのSectionをどのように設定していますか?あなたが達成しようとしていることの文脈なしにここで助けてはいけません。 – Chris

+0

'Options'コレクションに' Section'を設定することはどういう意味ですか? –

+0

更新プログラムごとに、「動作しませんでした」とはどういう意味ですか? –

答えて

0

私はそれを解決しました。 Woop-woop!私がしたのは、Sectionがヌルであるかどうかをチェックし、それが空白の場合はList<Paragraph>でした。だからOptionsになります。

public ICollection<Paragraph> Options 
    { 
     get 
     { 
      if (Section != null) 
      { 
       return Section.Paragraphs 
        .Where(p => p.Major == Major && p.Option != Option) 
        .ToList(); 
      } 
      else 
      { 
       return new List<Paragraph>(); 
      } 
     } 
    } 
0

Sectionプロパティをnull以外にします。おそらく、List<Paragraph>などのプロパティを持つSectionクラスなどがあります。この状況を別のモデルに「所属する」1つのモデルとして記述するためです。

あなたの段落がセクションに含まれていると考えているなら、あなたは何らかの相反を無料で得るでしょう、あなたは間違っています。あなたはこの関係を自分で維持することを見なければなりません。

+0

私はどうやってこのことをやりますか? –

+0

セクションに段落を追加するコードを教えてください。それはおそらく論理的な場所だろう。 –

+0

'Section'と' Paragraphs'の間には1対多の関係があります。私は現在、イニシャライザを使用して、MVCによって自動的に処理されるデータを設定しています。 –

関連する問題