asp.net-core - 尝试访问 Claims Identity Core 时出错
问题描述
我在尝试从 Entity Framework Core 访问声明时收到此错误。
列名“UserId1”无效。
奇怪的是我在课堂上没有 UserId1。
我的用户类看起来像:
public partial class User : IdentityUser
{
public string FirstName {get;set;}
public string LastName {get;set;}
... other properties
public virtual ICollection<UserClaim> UserClaim { get; set; }
}
我的用户声明类如下所示:
public partial class UserClaim : Microsoft.AspNetCore.Identity.IdentityUserClaim<string>
{
public byte[] Version { get; set; }
public virtual User User { get; set; }
}
我实际上在这一行得到了错误:
var userClaims = await _userManager.GetClaimsAsync(user);
解决方案
如下配置您的模型:
public partial class User : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual ICollection<UserClaim> UserClaim { get; set; }
}
public partial class UserClaim : Microsoft.AspNetCore.Identity.IdentityUserClaim<string>
{
public byte[] Version { get; set; }
}
数据库上下文:
public class ApplicationDbContext : IdentityDbContext<User, IdentityRole, string, UserClaim, IdentityUserRole<string>, IdentityUserLogin<string>,IdentityRoleClaim<string>,IdentityUserToken<string>>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>(b =>
{
// Each User can have many UserClaims
b.HasMany(e => e.UserClaim)
.WithOne()
.HasForeignKey(uc => uc.UserId)
.IsRequired();
});
}
}
推荐阅读
- c# - TestCaseData attribute does not match when TestCaseData has function call
- unit-testing - SpecFlow equivalent to parameterized test fixture
- javascript - Html5 File Input inside Popover
- java - How to correct a display problem when inserting a row in a JavaFX grid?
- javascript - Changing subdomain without refreshing the page
- javascript - React:我的功能组件中的解析错误
- java - 如何将 Repository 自动生成的 ID 返回到 MainActivity?
- typescript - TypeScript 使用类型或接口解构默认参数
- c - Linux /proc/kallsyms 文件,内核在哪里保存核心符号列表?
- oracle - 过程错误中的光标