2010-12-08 47 views
4

我评价一个EF4和有一个很基本的问题......我想,我似乎无法找到答案..实体框架代码优先 - 地图类与另一个类的List <>多个表?

采取下面的例子:

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类映射到两个表,还是我ahve重组下表我POCO的第一个这样的问题类包含的ID和PERSONID - 这不是我想要的东西O操作。

我可以添加的东西到OnModelCreating映射类,因为我需要它被映射?

谢谢!

+0

你提到`将Person类映射到两个表,然后`重新构造我的POCO,所以问题类包含id和personId`,这是没有意义的,你到底想要完成什么?你能澄清一下吗? – 2010-12-08 19:18:55

+0

对不起,也许我没有说这个问题的权利 - 我想知道是否可以设置Person类到数据库中的两个表的映射,因为它们当前存在或我必须重构问题类以包含额外的属性对应于数据库中的问题表 - 查看我自己的答案,我已经做了些什么来使它现在能够正常工作(我重构了类) – jryan 2010-12-09 12:42:47

回答

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

不确定它是完全正确的......但似乎现在工作。

相关问题