我想创建一个与数据库中具有以下列的AspNetUserRoles
表相似的表:
User_id
Role_id
这些列与用户和角色表相关
如何使用我的模型创建一个?我已经这样尝试过了:
public class AspNetUserRolesExtendedDetails
{
[Key]
[Column(Order = 0)]
public ApplicationUser UserId { get; set; }
[Key]
[Column(Order = 1)]
public AspNetRolesExtendedDetails RoleId { get; set; }
}
但是当我尝试运行迁移时,会出现此错误:
AspNetUserRolesExtendedDetails :: EntityType'AspNetUserRolesExtendedDetails'没有定义键。定义此EntityType的键。
AspNetUserRolesExtendedDetails:EntityType:EntitySet'AspNetUserRolesExtendedDetails'基于未定义键的'AspNetUserRolesExtendedDetails'类型。
如何创建这样的表,以及它的专有名称是什么?
编辑:
当我像这样更新我的模型时:
public class AspNetUserRolesExtendedDetails
{
[Key]
[Column(Order = 0)]
[ForeignKey("AspNetUsers")]
public ApplicationUser UserId { get; set; }
[Key]
[Column(Order = 1)]
[ForeignKey("AspNetRolesExtendedDetails")]
public AspNetRolesExtendedDetails RoleId { get; set; }
}
我收到此错误:
类型为'App.Models.AspNetUserRolesExtendedDetails'的属性'RoleId'上的ForeignKeyAttribute无效。在从属类型“ App.Models.AspNetUserRolesExtendedDetails”上找不到外键名称“ AspNetRolesExtendedDetails”。名称值应该是用逗号分隔的外键属性名称列表。
更新:
[Key]
[Column(Order = 0)]
[ForeignKey("Id")]
public String UserId { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
[Key]
[Column(Order = 1)]
[ForeignKey("Id")]
public String RoleId { get; set; }
public virtual AspNetRolesExtendedDetails AspNetRolesExtendedDetails { get; set; }
这是我现在拥有的,但是出现此错误:
类型'App.AspNetUserRolesExtendedDetails'上属性'UserId'上的ForeignKeyAttribute无效。在依赖类型“ App.Models.AspNetUserRolesExtendedDetails”上找不到导航属性“ Id”。名称值应为有效的导航属性名称。
答案 0 :(得分:0)
所以我设法找到了解决方案。由于某种原因,直接复制对象名称对我有效。
public class AspNetUserRolesExtendedDetails
{
[Key]
[Column(Order = 0)]
[ForeignKey("ApplicationUser")]
public String UserId { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
[Key]
[Column(Order = 1)]
[ForeignKey("AspNetRolesExtendedDetails")]
public String RoleId { get; set; }
public virtual AspNetRolesExtendedDetails AspNetRolesExtendedDetails { get; set; }
}