目前我正在尝试将我的自定义对象连接到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
引用。
我究竟做错了什么?谢谢你的帮助
答案 0 :(得分:5)
默认情况下(由VS在使用CodeFirst创建新项目时生成),ApplicationUser
的ID为string
。 Employee
到ApplicationUser
中的外键属于int
类型,因此类型不匹配。
public class ApplicationUser : IdentityUser
{
//Id in IdentityUser is of type string
}