我有个问题,我好像就是搞不清楚。假设我的域中定义了两个实体: Person和Document。以下是文档的定义:
public class Document
{
public int Id { get; set; }
[Required]
[StringLength(255)]
public string Title { get; set; }
public DateTime Date { get; set; }
public virtual Person Owner{ get; set; }
public virtual Person AssignedTo { get; set; }
}现在,当EF CTP4在初始化时创建SQL表时,只有一个字段映射到Person.Id为Owner_id。无论我怎么尝试,AssignedTo的字段都不会被创建。
有什么办法可以解决这个问题吗?
致以敬意,
avsomeren
发布于 2010-11-27 05:14:03
您的代码完美地为我在数据库中创建了所需的模式:

如果你没有在你的数据库中得到这个模式,那么我的猜测是你的其他对象模型有些地方不对劲。你能发布你的完整对象模型吗?
另一种解决方案:
虽然您当前的文档类将为您提供所需的结果,但您仍然可以利用并显式指定导航属性的FK:
public class Document
{
public int Id { get; set; }
[Required][StringLength(255)]
public string Title { get; set; }
public DateTime Date { get; set; }
public int OwnerID { get; set; }
public int AssignedToID { get; set; }
public virtual Person Owner { get; set; }
public virtual Person AssignedTo { get; set; }
}Code First现在将推断任何名为的属性(例如OwnerID),具有与主键(int)相同的数据类型,表示关系的外键。
这本质上导致了相同的DB模式,加上文档对象上的FK以及导航属性,这为您提供了使用模型的终极灵活性。
https://stackoverflow.com/questions/4288239
复制相似问题