【问题标题】:How to change the database that ASP.NET Identity use for creating its necessary tables?如何更改 ASP.NET Identity 用于创建其必要表的数据库?
【发布时间】:2015-08-22 04:31:08
【问题描述】:

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

  1. 网页界面
  2. 网络 API

我正在使用 Web API 项目进行身份验证(ASsp.Net Identity Framework)。 下面是 Web.API 项目中连接字符串的 web.config 设置

<connectionStrings>
    <add name="AuthContext" connectionString="Data Source=./SQLEXPRESS;Initial Catalog=TestDB;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
  </connectionStrings>

我的 DbContext 类

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 是一个包含少量表的现有数据库。这就是我在 Package Manager Console 的 Web API 项目中所做的

  1. 启用迁移
  2. 添加迁移初始创建
  3. 更新数据库

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

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

-艾伦-

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-identity


    【解决方案1】:

    假设你有一个这样的连接字符串:

    <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 的文件,您可以在构造函数中更改连接字符串名称,但由于您有一个自定义类,我认为这个概念是相同的:

    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; }
    }
    

    【讨论】:

    • 连接字符串指向我的 TestDb 但它仍在创建一个新数据库
    • @AlanB 你能用你的TestDb 上下文类和IdentityModels 以及你的TestDb 连接字符串来更新你的问题吗?据我所知,除此之外没有什么真正的东西,也看看this看看它是否能解决你的问题。
    • @AlanB 我已根据您的更新更新了答案,我不确定名称是否应该相同,但此类负责在您创建第一个用户名时创建新的数据存储,如果它没有工作回退到默认名称和模板为您创建的内容。
    猜你喜欢
    • 2016-03-27
    • 2015-04-22
    • 2014-02-16
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 2016-04-04
    相关资源
    最近更新 更多