【发布时间】:2014-05-28 14:37:46
【问题描述】:
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 是从哪个实体框架中形成的。
我想使用我的数据库而不是本地数据库,我从本地数据库表生成了“生成”脚本并 我在自定义数据库中创建了它们,但是当我在下一行中更改数据库上下文时:
UserManagerFactory = () => new UserManager<IdentityUser>(new UserStore<IdentityUser>(new MyCustomDBEntities()));
MyCustomDBEntities 是我在实体框架 (edmx) 中的自定义数据库 我收到以下错误: “实体类型 IdentityUser 不是当前上下文模型的一部分”
我做错了什么? 我应该创建自己的用户管理器吗?
public class MyCustomDBEntities : IdentityDbContext<IdentityUser>
{
public MyCustomDBEntities()
: base("name=ConnectionStringName")
{
}
}
【问题讨论】:
-
您确定在新数据库中正确生成了表吗?
-
是的,因为我使用管理工作室来生成创建脚本。有趣的是,系统并没有生成具有该名称的表,而是生成了许多带有 AspNet 前缀的表,例如 AspNetRoles。也许错误在其他地方?
-
简单地将LocalDB创建的文件恢复到SQL Server会更容易。这样你就知道你拥有所需的一切。例如,您可能缺少
__MigrationHistory表中的某些行。 -
不幸的是,我在还原后遇到了同样的错误。还有其他想法吗?
-
所以将连接字符串改回 localdb 仍然有效吗?你能分享一下你用于 SQL Server 的字符串吗?