4

私はEF4を評価していて、かなり基本的な質問があります...私は答えを見つけることができないようだと思います。

次の例を見てください。

public class Question
{
  public string question {get;set;}
  public string answer {get; set;}
}

public class Person
{
  public string Id {get; set;}
  public string Name {get; set;}
  public List<Question> Questions {get; set;}
}

次に、データベースに次のテーブルがあります

Person
(
 id,
 name
)

Question
(
 id,
 personId,
 question,
 answer,
)

最初にEF4コードを使用してPersonクラスを2つのテーブルにマップできますか、またはPOCOの最初のコードを再構築して、質問クラスにidとpersonIdが含まれるようにすることはできますか?これは私がやりたいことではありません。

OnModelCreatingに何かを追加して、マップする必要があるときにクラスをマップできますか?

ありがとう!

4

1 に答える 1

0

これが今のところ私がやったことですが、質問クラスを再構築する必要があります...

public class Question
{  
    public int Id {get;set;}   /* New */
    public int PersonId {get;set;}  /* New */
    public string question {get;set;}  
    public string answer {get; set;}

    public virtual Person PersonObj {get;set;}
}

public class Person
{  
    public string Id {get; set;}  
    public string Name {get; set;}  
    public List<Question> Questions {get; set;}
}

OnModelCreatingイベントに以下を追加しました

 modelBuilder.Entity<Person>().
                    HasMany(d => d.Questions).
                    WithRequired(c => c.Person).
                    HasForeignKey(c => c.PersonId).
                    WillCascadeOnDelete();

それが完全に正しいかどうかはわかりません...しかし、今のところ機能しているようです。

于 2010-12-09T12:48:57.917 に答える