我希望这是简单易行的解决方案。 我已在现有项目中安装了 IdentityServer3 ,并设法在内存中获取""工作的东西。 现在我正在连接我的 UserManager 。当我尝试进行身份验证时,出现此错误:
"在模型生成期间检测到一个或多个验证错误:\ r \ n \ r \ nCormar.Sql.Claim :: EntityType' Claim'没有定义键。定义此EntityType的键。\ r \ nCormar.Sql.ClaimsIdentity :: EntityType' ClaimsIdentity'没有定义键。定义此EntityType的键。\ r \ nCormar.Sql.IdentityReference :: EntityType' IdentityReference'没有定义键。定义此EntityType的键。\ r \ nCormar.Sql.Secret :: EntityType' Secret'没有定义键。定义此EntityType的键。\ r \ nCormar.Sql.RefreshToken :: EntityType' RefreshToken'没有定义键。定义此EntityType的键。\ r \ nCormar.Sql.Token :: EntityType' Token'没有定义键。定义此EntityType的键。\ r \ n \ nCormar.Sql.Scope :: EntityType' Scope'没有定义键。定义此EntityType的键。\ r \ nCormar.Sql.ScopeClaim :: EntityType' ScopeClaim'没有定义键。定义此EntityType的密钥。\ r \ nClaims:EntityType:EntitySet' Claims'是基于类型&'39;声明'没有定义键。\ r \ nClaimsIdentities:EntityType:EntitySet' ClaimsIdentities'是基于类型&'39; ClaimsIdentity'没有定义键。\ r \ nIdentityReferences:EntityType:EntitySet' IdentityReferences'基于类型' IdentityReference'没有定义键。\ r \ nSecrets:EntityType:EntitySet' Secrets'是基于类型'秘密'没有定义键。\ r \ nRefreshTokens:EntityType:EntitySet' RefreshTokens'基于类型' RefreshToken'没有定义键。\ r \ nTokens:EntityType:EntitySet' Tokens'是基于类型'令牌'没有定义键。\ r \ nScopes:EntityType:EntitySet' Scopes'基于类型'范围'没有定义键。\ r \ nScopeClaims:EntityType:EntitySet' ScopeClaims'基于类型' ScopeClaim'没有定义键。\ r \ n"
我认为这可能是因为我错过了一个软件包,因此我使用 NuGet 来安装 IdentityServer3.EntityFramework ,但这并不起作用。 有谁知道如何解决这个问题?
答案 0 :(得分:0)
这很简单,你必须拥有 IdentityServer3.EntityFramework 。我查看了源代码并看到了迁移类,所以我只是简单地将实体添加到我的 DbContext 中:
public DbSet<Client> Clients { get; set; }
public DbSet<ClientClaim> ClientClaims { get; set; }
public DbSet<ClientSecret> ClientSecrets { get; set; }
public DbSet<Consent> Consents { get; set; }
public DbSet<Scope> Scopes { get; set; }
public DbSet<ScopeClaim> ScopeClaims { get; set; }
然后我做了add-migration
和update-database
。这为我创造了表格,一切都是嘀咕嘘声