如何更改 ASP.NET Identity 用于创建其必要表的数据库?

How to change the database that ASP.NET Identity use for creating its necessary tables?

我的解决方案中有 2 个项目

  1. 网页UI
  2. 网页API

我正在使用 Web API 项目进行身份验证(ASsp.Net 身份框架)。 以下是 Web.API 项目

中连接字符串的 web.config 设置
<connectionStrings>
    <add name="AuthContext" connectionString="Data Source=./SQLEXPRESS;Initial Catalog=TestDB;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
  </connectionStrings>

我的 DbContext Class

public class AuthContext : IdentityDbContext<IdentityUser>
    {
        public AuthContext()
            : base("AuthContext",throwIfV1Schema:false)
        {

        }

        public static  AuthContext Create()
        {
            return new AuthContext();
        }

        public DbSet<Client> Clients { get; set; }
        public DbSet<RefreshToken> RefreshTokens { get; set; }
    }

TestDB 是一个现有的数据库,表很少。这就是我在包管理器控制台

的 Web API 项目中所做的
  1. 启用迁移
  2. 添加迁移 InitialCreate
  3. 更新数据库

它总是创建一个名为 AuthContext 的新数据库,而不是在 TestDB 中添加必要的表。

我将 Web UI 项目设置为解决方案中的启动项目。如何让更新数据库在 TestDb 中创建表而不是创建新数据库。

-艾伦-

假设您有这样的连接字符串:

<connectionStrings>
    <add name="TestDB" connectionString="Data Source=./SQLEXPRESS;
AttachDbFilename=|DataDirectory|\TestDB.mdf;Initial Catalog=TestDB;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
  </connectionStrings>

默认情况下,在您的 Models 文件夹中有一个名为 IdentityModels.cs 的文件,您可以在构造函数中更改连接字符串名称,但由于您有自定义 class ,我觉得概念是一样的:

public class AuthContext : IdentityDbContext<ApplicationUser>
{
    public AuthContext()
        : base("TestDB",throwIfV1Schema:false)
    {

    }

    public static  AuthContext Create()
    {
        return new AuthContext();
    }

    public DbSet<Client> Clients { get; set; }
    public DbSet<RefreshToken> RefreshTokens { get; set; }
}