我正在构建一个MVC4应用程序并使用Entityframework。 我正在使用代码优先模型。
我的Project类如下:
public class Project
{
[Key]
public int ProjectId { get; set; }
public ProjectContact ApprovalContact { get; set; }
public ProjectContact BillContact { get; set; }
public ProjectContact ProjectContact { get; set; }
}
我的ProjectContact类如下:
public class ProjectContact
{
[Key]
public int ProjectContactId { get; set; }
public string JobTitle { get; set; }
public string Number { get; set; }
public string ProjectContactMSFNo { get; set; }
public string FullName { get; set; }
}
在 EntityFramework 生成的数据库中使用代码优先是
SELECT [ProjectId]
,[ApprovalContact_ProjectId]
,[BillContact_ProjectId]
,[ProjectContact_ProjectId]
FROM [Db].[dbo].[Projects]
直到现在它正常运作
现在何时 我将列 [ApprovalContact_ProjectId] 更改为 [ApprovalContact] 并尝试在数据库中插入项目我得到错误:列名称无效'ApprovalContact_ProjectContactId'。
当我尝试在模型构建器中映射模型名称时,我得到错误:Models.ProjectContact必须是不可为空的
如何告诉 DbContext 将 [ApprovalContact_ProjectId] 映射到 [ApprovalContact] ??
答案 0 :(得分:1)
您是否尝试过关注注释
[ForeignKey("ApprovalContactID")]
public ProjectContact ApprovalContact { get; set; }
我在Entity Framework Code First : how to annotate a foreign key for a "Default" value?
找到了这个