【问题标题】:Invalid ForeignKeyAttribute name with Entity Framework in code first approach代码优先方法中实体框架的 ForeignKeyAttribute 名称无效
【发布时间】:2016-11-12 18:37:29
【问题描述】:

我有以下型号

public class Team
{
    [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public string Name { get; set; }

    [ForeignKey("User")]
    public int ManagerId { get; set; }

    public virtual User User { get; set; }
}

这是我的User 课程:

public class User
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    [ForeignKey("Comapny")]
    public int CompanyId { get; set; }

    public virtual Company Company { get; set; }
}

这是我的Company 课程:

public class Company
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public string Name { get; set; }
}

当我尝试添加新迁移时,出现以下错误

类型上的属性“CompanyId”上的 ForeignKeyAttribute “ReportsEngine.Areas.Test.Models.User”无效。导航 在依赖类型上找不到属性“公司” 'ReportsEngine.Areas.Test.Models.User'。名称值应该是 有效的导航属性名称。

我在这里做错了什么?

【问题讨论】:

  • 您确定是“公司”而不是“公司”吗?

标签: c# asp.net entity-framework asp.net-mvc-5 entity-framework-migrations


【解决方案1】:

这只是一个错字,Company 而不是 Comapany

[ForeignKey("Company")]
    public int CompanyId { get; set; }

【讨论】:

    【解决方案2】:

    [ForeignKey("Comapny")] 表示用于Company 表的外键的属性应该是Comapny

    错误是因为您没有在Company 表上定义Comapny 属性。

    将以下内容添加到Company 表中:

    public int Comapny { get; set; }
    

    显然,最好在它前面加上Id,以表明它是那种类型的字段。

    或者您可以省略[ForeignKey] 属性,让实体框架代码首先为您添加一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      • 1970-01-01
      • 2016-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多