[英]ASP.NET MVC Code First Migration - Model with 2 Primary Keys
我想在数据库中创建一个类似于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”。 Name值应该是逗号分隔的外键属性名称列表。
更新:
[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”。 Name值应为有效的导航属性名称。
所以我设法找到了解决方案。 由于某种原因,直接复制对象名称对我有效。
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; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.