Entity framework 4 实体框架代码优先-映射类与列表<&燃气轮机;将另一个类添加到多个表?

Entity framework 4 实体框架代码优先-映射类与列表<&燃气轮机;将另一个类添加到多个表?,entity-framework-4,code-first,Entity Framework 4,Code First,我正在评估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&g

我正在评估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;}
}
我可以先使用EF4代码将Person类映射到这两个表吗?或者我必须重新构造我的POCO的第一个,以便问题类包含id和personId,这不是我想做的事情

我可以向OnModelCreating添加一些东西来映射我需要映射的类吗


谢谢

好吧,这是我现在所做的-但这需要我重新构造我的问题类

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;}
}
公开课问题
{  
public int Id{get;set;}/*New*/
public int PersonId{get;set;}/*New*/
公共字符串问题{get;set;}
公共字符串答案{get;set;}
公共虚拟人PersonObj{get;set;}
}
公共阶层人士
{  
公共字符串Id{get;set;}
公共字符串名称{get;set;}
公共列表问题{get;set;}
}
并在OnModelCreating事件中添加了以下内容

 modelBuilder.Entity<Person>().
                    HasMany(d => d.Questions).
                    WithRequired(c => c.Person).
                    HasForeignKey(c => c.PersonId).
                    WillCascadeOnDelete();
modelBuilder.Entity()。
有很多问题。
需要(c=>c.Person)。
HasForeignKey(c=>c.PersonId)。
WillCascadeOnDelete();

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

您提到的
将Person类映射到两个表
,然后
重新构造我的POCO,使问题类包含id和personId
,这没有意义,您到底想实现什么?你能澄清一下吗?对不起,也许我没有正确表达这个问题-我想知道我是否可以设置Person类到DB中当前存在的两个表的映射,或者我是否必须重构question类以包含与数据库中的question表相对应的额外属性-请参阅我自己的答案现在我已经完成了这项工作(我重新构造了类)实际上我对虚拟属性不太满意…有什么办法可以绕过它们吗?标记属性
virtual
可以确保它们将被延迟加载。有关示例,请参见。另外,如果您对这个解决方案感到满意,您应该将它标记为答案?我可以只使用PersonId而不是person对象的引用吗?
 modelBuilder.Entity<Person>().
                    HasMany(d => d.Questions).
                    WithRequired(c => c.Person).
                    HasForeignKey(c => c.PersonId).
                    WillCascadeOnDelete();