ASP.NET MVC:如何正确引用自定义对象到ApplicationUser?

时间:2016-01-25 21:01:45

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

目前我正在尝试将我的自定义对象连接到Application User,这是由Visual Studio自动生成的。

Employee.cs

public class Employee
{
    [Display(Name = "ID")]
    [Key]
    public int EmployeeID { get; set; }

    [ForeignKey("ApplicationUser")]
    public int ApplicationUserID { get; set; }

    [Required]
    [DataType(DataType.Currency)]
    public decimal MonthlySalary { get; set; }

    [Required]
    public string Experience { get; set; }

    [Required]
    public string Description { get; set; }

    public string PhotoURL { get; set; }

    public virtual ApplicationUser ApplicationUser { get; set; }
}

错误是:

  

运行所选代码生成器时出错:'无法执行   检索Models.Tables.Employee的元数据。一个或多个验证   在模型生成期间检测到错误:   Parent_ApplicationUser_Target_Parent_ApplicationUser_Source ::   参照的从属角色中的所有属性的类型   约束必须与相应的属性类型相同   主要角色。实体上的属性“ApplicationUserlD”的类型   'Parent'与实体上的'Id'属性类型不匹配   参考约束中的'ApplicationUser'   “Parent_ApplicationUser。员工ApplicationUser目标员工   ApplicationUser Source :: Dependent中所有属性的类型   引用约束的作用必须与对应的相同   主体角色中的属性类型。财产的类型   实体'Employee上的'ApplicationUserlD'与类型不匹配   参考中实体'ApplicationUser'上的属性'Id'   约束'Employee_ApplicationUser。

Parent表包含与ApplicationUser相同的Employee引用。 我究竟做错了什么?谢谢你的帮助

1 个答案:

答案 0 :(得分:5)

默认情况下(由VS在使用CodeFirst创建新项目时生成),ApplicationUser的ID为stringEmployeeApplicationUser中的外键属于int类型,因此类型不匹配。

public class ApplicationUser : IdentityUser
{
  //Id in IdentityUser is of type string
}