当列名更改错误时,EntityFramework是无效的列名

时间:2013-10-30 10:36:22

标签: entity-framework asp.net-mvc-4 entity-framework-6

我正在构建一个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] ??

1 个答案:

答案 0 :(得分:1)

您是否尝试过关注注释

[ForeignKey("ApprovalContactID")]
public ProjectContact ApprovalContact { get; set; }

我在Entity Framework Code First : how to annotate a foreign key for a "Default" value?

找到了这个

我也建议你看看: https://entityframework.codeplex.com/workitem/1226