拥有OAuth提供程序;实体类型IdentityUser不是当前上下文模型的一部分
本文关键字:上下文 模型 一部分 IdentityUser OAuth 程序 类型 实体 拥有 | 更新日期: 2023-09-27 18:05:29
UserManagerFactory = () => new UserManager<IdentityUser>(new UserStore<IdentityUser>());
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory),
AuthorizeEndpointPath = new PathString("/api/AccountOwin/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true
};
IdentityUser,UserStore从其中产生实体框架
我想使用我的数据库而不是本地db,我从本地db表和生成"生成"脚本我在我的自定义数据库中创建了它们,但是当我在下面一行更改db上下文时:
UserManagerFactory = () => new UserManager<IdentityUser>(new UserStore<IdentityUser>(new MyCustomDBEntities()));
Where MyCustomDBEntities是我的自定义数据库在实体框架(edmx)我得到以下错误:"实体类型IdentityUser不是当前上下文模型的一部分"
我做错了什么?我应该创建自己的Usermanager吗?
public class MyCustomDBEntities : IdentityDbContext<IdentityUser>
{
public MyCustomDBEntities()
: base("name=ConnectionStringName")
{
}
}
我怀疑问题是与您的连接字符串。首先,上下文的构造函数只需要有连接字符串的名称,因此您可以将其更改为:
public MyCustomDBEntities() : base("ConnectionStringName") { }
其次,这可能只是你在发布之前编辑你的代码,该名称需要与配置文件中的名称匹配:
<add name="ConnectionStringName" providerName="System.Data.SqlClient" connectionString="...." />
最后,你可能需要改变你的连接字符串使用标准的SQL Server格式,而不是EF格式。所以它可能看起来像这样:
Data Source=LNODA-PC;Initial Catalog=Dashboard;Persist Security Info=True;User Id=XXXX;Password=XXXXXX;MultipleActiveResultSets=True;