ASP.NET Entity Framework SQL 服务器 mdf 文件的代码优先连接字符串,它在哪里以及如何更改它?

ASP.NET Entity Framework code-first connection string for SQL Server mdf file, where is it and how do I change it?

我正在启动我的 asp.net 应用程序,但在使用本地创建的某些数据库时遇到问题。我需要更改程序的连接字符串以指向我的新在线 SQL 服务器数据库,但我找不到任何方法来做到这一点。我使用 Entity Framework 代码优先脚手架在本地创建了这些数据库。这是我的数据库上下文代码:

public class SubjectDbContext : DbContext
{
    public DbSet<Subject> SubjectDatabase { get; set; }
}

然后我用这个方法把它变成了 .mdf:

使用构造函数自动生成数据库(根据 https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx#localdbtosse)。这就是我能够弄清楚的。

我真的需要找到这些连接字符串以便我可以更改它们,否则我不知道如何让我发布的应用程序联机访问其各自的数据库。

重建这些数据库并不是真正的选择。所以我需要找到并更改它们的连接字符串。现在连接字符串不在 web.config 文件中。事实上,删除 web.config 文件中的所有连接字符串并不会阻止这些数据库在本地工作。所以它们必须存储在其他地方。

如何更改这些连接字符串。如果我不能,我的应用程序将无法在线运行。

我能找到的最接近这个问题的 post 是: Code first: Where's the connection string & the Database?

但它没有回答问题。感谢您提供任何帮助或链接。

默认连接字符串以名称 "DefaultConnection" 添加到 Web.config。

数据库文件会在应用程序的 App_Data 文件夹下创建。(单击 'Show All files' 查看数据库文件或浏览到资源管理器中的 App_Data 文件夹路径)。

这是将 DefaultConnection 设置为新服务器后进行迁移的方式:

  1. 将 SubjectDbContext 更改为如下所示,添加构造函数:

    public class SubjectDbContext : System.Data.Entity.DbContext
    {
        public SubjectDbContext() : base("DefaultConnection")
        {
        }
    
        public DbSet<Subject> SubjectDatabase { get; set; }
    }
    
  2. 运行 程序包管理器控制台中的命令:

    Enable-Migrations -ContextTypeName SubjectDbContext -MigrationsDirectory Migrations\SubjectDbContext
    

    它将在 Migrations/SubjectDbContext 文件夹中创建 Configuration.cs

  3. Configuration构造函数中设置AutomaticMigrationsEnabled = true;。如果需要可以添加种子代码。

  4. 运行 程序包管理器控制台中的以下命令,用于创建数据库及其表:

    Update-Database -ConfigurationTypeName [Replacewith namespace].SubjectDbContext.Configuration –Verbose