我正在尝试构建一个代码第一个表,它将有一个第3个表,将它与ApplicationUser相关联。我一直在寻找SO和谷歌,就像我一直那样,找到解决我问题的方法,因为我确信我不是第一个碰到这个问题,但我尝试过的所有解决方案都没有用。也许是因为我使用的ASP.NET身份版本(v 2.2.1)需要一个与我找到的不同的解决方案,或者还有我不熟悉的概念。
基本上,我正在尝试构建的正是IdentityUserRole类具有不同含义的内容。我想使用DataAnnotations而不是the method they used来构建它。虽然我很欣赏其他解决方案和做同样事情的方法,而且我正在开发一个真正的项目,但我喜欢学习,至少想学习如何使用DataAnnotation。
话虽如此,这是好事:
Sections
类,相对于IdentityRole类
public class Sections {
[Key]
[StringLength(128)]
public virtual String Id { get; set; }
[Required]
[Index("SectionsNameIndex", IsUnique = true)]
[MaxLength(256)]
[Display(Name = "Section Name")]
public virtual String Name { get; set; }
}
这是UserSections
类,它与IdentityUserRole类
public class UserSections {
[Key, Column(Order = 1)]
[Index]
[StringLength(128)]
[ForeignKey("User")]
public virtual String UserId { get; set; }
public virtual ApplicationUser User { get; set; }
[Key, Column(Order = 2)]
[Index]
[StringLength(128)]
[ForeignKey("Section")]
public virtual String SectionId { get; set; }
public virtual Sections Section { get; set; }
}
public class UserSections {
[Key, Column(Order = 1)]
[Index]
[StringLength(128)]
public virtual String UserId { get; set; }
[ForeignKey("UserId")]
public virtual ApplicationUser User { get; set; }
[Key, Column(Order = 2)]
[Index]
[StringLength(128)]
public virtual String SectionId { get; set; }
[ForeignKey("SectionId")]
public virtual Sections Section { get; set; }
}
问题出在任何一个版本中我都会收到以下错误:
在模型生成期间检测到一个或多个验证错误:
{MyProjectName} .DataContexts.IdentityUserLogin :: EntityType'IdentityUserLogin'没有定义键。定义此EntityType的密钥。
{MyProjectName} .DataContexts.IdentityUserRole :: EntityType'IdentityUserRole'没有定义键。定义此EntityType的密钥。
IdentityUserLogins:EntityType:EntitySet'IdentityUserLogins'基于没有定义键的类型'IdentityUserLogin'。
IdentityUserRoles:EntityType:EntitySet'IdentityUserRoles'基于类型'IdentityUserRole',没有定义键。
我如何使用DataAnnotations使其像IdentityUserRoles
一样工作,如果可能的话,创建第三个类以扩展ApplicationUser
类?
根据给出的答案,这里有更多信息。我确实创建了一个辅助上下文,使其远离身份上下文。当我尝试使用与身份部分相同的上下文时,它起作用。但是,有没有办法使用不同的上下文?
答案 0 :(得分:0)
正如Stephen Reindl和Steve Greene评论的那样,我的问题的解决方案是使用我用于ApplicationUser
的相同上下文。