Код структуры сущностей первый - сопоставить класс с List <> другого класса нескольким таблицам? - PullRequest
4 голосов
/ 08 декабря 2010

Я оцениваю 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 с двумя таблицами, или я должен сначала реструктурировать мой POCO, поэтому вопроскласс содержит id и personId - это не то, что я хотел бы сделать.

Могу ли я добавить что-то в OnModelCreating для отображения класса так, как мне нужно, чтобы он был отображен?

Спасибо!

1 Ответ

0 голосов
/ 09 декабря 2010

Хорошо, вот что я сделал на данный момент - но это требует от меня реструктуризации моего класса вопросов ...

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();

Не уверен, что это полностью правильно ... но, похоже, работает на данный момент.

...