EF迁移未使用Web配置连接字符串

本文关键字:连接 字符串 配置 Web 迁移 未使用 EF | 更新日期: 2023-09-27 18:23:50

我有我的web.config文件:

<connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=.'SRV;Initial Catalog=SomeCatalog;Integrated Security=true;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
  </connectionStrings>

我有我的web.debug.config:

<connectionStrings>
        <add name="DefaultConnection" connectionString="Data Source=.'SRV;Initial Catalog=SomeCatalog;Integrated Security=true;MultipleActiveResultSets=True" providerName="System.Data.SqlClient"
            xdt:Transform="SetAttributes" xdt:Locator="Match(DefaultConnection)"/>
  </connectionStrings>

我有我的web.defaultserver.config

<connectionStrings>
   <add name="DefaultConnection" connectionString="Data Source=.';Initial Catalog=EverybodyPilates;Integrated Security=true;MultipleActiveResultSets=True" providerName="System.Data.SqlClient"
      xdt:Transform="SetAttributes" xdt:Locator="Match(DefaultConnection)" />
  </connectionStrings>

当我运行迁移时:

> Update-Database -Force -Verbose

它挂了很长时间,因为它似乎找不到我的连接字符串。我的网络配置是否正确?

或者我有其他不正确的地方吗?

EF迁移未使用Web配置连接字符串

有趣的是,它挂起而不是返回错误。默认情况下,它将从启动项目中提取连接信息。您可以手动指定项目:

Update-Database –SourceMigration $InitialDatabase -ProjectName ProjectWithMigrations -StartUpProjectName WebApp

您还可以强制上下文使用该连接字符串,默认情况下,它会根据上下文名称查找一个具有的连接字符串。

public class MyContext : DbContext
{
    static MyContext()
    {
    }
    public MyContext()
        : base("Name=DefaultConnection")
    {
    }
}

如果这些似乎都没有帮助,你可以尝试右键单击你的web应用程序并选择发布,在调试构建配置中进行简单的文件系统发布,并手动检查web.config,看看它是否转换正确,甚至将其放入wwwroot,如果存在连接字符串问题,你应该得到一个异常。