【发布时间】:2015-08-04 22:39:17
【问题描述】:
我习惯于先使用数据库。创建了一个启用登录的 ASP MVC5 项目,默认设置在与所有相关表(如 AspNetUser 等)的默认连接下创建一个数据库。我想要实现的是在我自己的数据库中拥有这些表(甚至可能以不同的名称命名用户、角色等)。甚至不确定我需要从哪里开始。 配置身份验证使用这个
app.CreatePerOwinContext(ApplicationDbContext.Create);
它又使用如下所示的 DefaultConnection
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
我将默认连接更改为指向我的数据库的连接。
我更改了我的数据库上下文以实现 IdentityDBContext。现在,当我尝试登录时,我收到一条错误消息,指出 IdentityUserLogin 不是模型上下文的一部分。
我假设我需要手动创建相关表。那是对的吗?我将如何更改表名?在如何将身份验证集成到另一个数据库中的正确方向上的任何步骤将不胜感激。
【问题讨论】:
-
你实现了IdentityDbContext接口吗?
-
是的。我应该在我的数据库中使用完全相同的名称(例如 Aspnetusers 等)创建表吗?我的班级,如果现在公共部分班级 MyEntities:IdentityDbContext
-
不,如果您实现了 IdentityDbContext ,那么当您将在 MS SQL 中创建数据库时 - 代码会自动创建此数据库。如果您已经有数据库 - 只需尝试迁移并更新数据库
-
它在这一行中断 - var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent: false);
-
只是好奇——如果我想在数据库优先的方法中使用我自己的表名说“用户”“角色”等等,没有办法将它与生成的代码联系起来?只是紧张,因为数据库由不同的团队维护,我们首先遵循 DB 来分离关注点
标签: c# asp.net-mvc entity-framework forms-authentication owin