【发布时间】:2021-11-22 17:29:34
【问题描述】:
我正在尝试使用 Entity Framework Core / .NET 5 与我的数据库进行交互。
当我尝试查询 DbContent.UserClaims 时,我收到以下错误:
Microsoft.Data.SqlClient.SqlException (0x80131904):列名“UserId1”无效。
我不确定UserId1 我们来自哪里。我有一个名为UserId 的属性,它是外键。这是关系映射
这是我在 DbContext 类中尝试做的事情
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<User>(user =>
{
user.HasKey(r => r.Id);
user.HasMany(x => x.UserRoles).WithOne().HasForeignKey(x => x.UserId);
user.HasMany(x => x.UserClaims).WithOne().HasForeignKey(x => x.UserId);
user.HasMany(x => x.UserTokens).WithOne().HasForeignKey(x => x.UserId);
});
builder.Entity<UserClaim>(userClaim =>
{
userClaim.HasKey(r => r.Id);
userClaim.HasOne(r => r.User).WithOne().HasForeignKey<UserClaim>(x => x.UserId);
});
}
这是从IdentityUserClaim派生的UserClaim类
public class UserClaim : IdentityUserClaim<string>
{
public virtual User User { get; set; }
}
这是从IdentityUser派生的User类
public class User : IdentityUser<string>
{
public virtual ICollection<UserToken> UserTokens { get; set; }
public virtual ICollection<UserRole> UserRoles { get; set; }
public virtual ICollection<UserClaim> UserClaims { get; set; }
}
这是 EF5 正在生成的查询
SELECT [u].[Id], [u].[ClaimType], [u].[ClaimValue],[u].[UserId], [u].[UserId1]
FROM [UserClaims] AS [u]
如何在 Entity Framework Core 中解决此问题?
【问题讨论】:
标签: entity-framework-core asp.net-identity entity-relationship