【问题标题】:MVC6 Connection Strings for SQL Server ExpressSQL Server Express 的 MVC6 连接字符串
【发布时间】:2015-12-17 00:57:13
【问题描述】:

我长期使用 MVC5 实体框架,web.config 中的连接字符串如下所示:

<connectionStrings>
    <add name="GuestContext" 
         connectionString="Data Source=DAVESQLSERVER\SQLEXPRESS;Initial Catalog=NexDec12;Integrated Security=False;User ID=sa;Password=changeME!;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False" 
         providerName="System.Data.SqlClient" />
</connectionStrings>

我试图在appsettings.json 文件中弄清楚如何做到这一点。我正在使用 Rick Anderson 的教程 here 学习 MVC6。

我想连接到我的外部 SQL Server Express,而不是使用 VS 或 IIS10 中的内置 SQL Server。我试过这个但它不起作用,说用户sa的登录无效(所以它试图使用正确的用户名?)我觉得它没有使用正确的密码,但我不知道怎么做为新的 MVC6 json 配置格式构造一个连接字符串。

我试过了:

"Data": {
    "DefaultConnection": {
      "ConnectionString": "Server=DAVESQLSERVER\\SQLEXPRESS;Database=MovieTut;Trusted_Connection=True;MultipleActiveResultSets=true; Integrated Security=false;User ID=sa;Password=changeME!"
    }

【问题讨论】:

  • 问题是我没有启动数据库迁移。以前使用 MVC5 EF6 时,除非我要更改架构,否则我永远不必使用迁移。似乎使用 MVC6 EF7 你必须初始化迁移。

标签: sql-server json asp.net-mvc asp.net-core-mvc


【解决方案1】:

我会向您的 config.json 推荐一个不同的结构,就像这样(注意“两个连接声明中的 ConnectionString 元素)

编辑为代码添加格式

"Data": {
    "DefaultConnection": {
        "ConnectionString": "Server=.;Database=MyDb;Trusted_Connection=True;MultipleActiveResultSets=true"
    },
"EmployeeContext": {
        "ConnectionString": "Server=.;Database=Manish_Database;Trusted_Connection=True;MultipleActiveResultSets=true"
    }
}

【讨论】:

    【解决方案2】:

    您的两个连接字符串不相等:MVC 6 的连接字符串包含“Trusted_Connection=True”但仍想使用“sa”作为用户。您必须在 Windows 和 SQL 身份验证之间进行选择。请参阅Choose an Authentication Mode 并相应地更新您的连接字符串。

    【讨论】:

      【解决方案3】:

      我认为问题在于您选择在 json 版本中“命名”连接字符串的方式。

      尝试将值 "ConnectionString" 更改为 "GuestContext"

      "Data": {
          "DefaultConnection": {
            "GuestContext": "Server=DAVESQLSERVER\\SQLEXPRESS;Database=MovieTut;Trusted_Connection=True;MultipleActiveResultSets=true; Integrated Security=false;User ID=sa;Password=changeME!"
          }
      

      另外,我希望在 config.json 而不是 appsettings.json 中定义它(但我认为这可能是可配置的)。

      【讨论】:

      • 我不这么认为,因为我的应用程序正在调用 Startup.cs 文件中的默认连接,所以我觉得如果我将连接字符串输入到默认连接中它应该可以工作......会查看并尝试您建议的替代方法。
      • 您的startup.cs 是否有配置数据库上下文的步骤?如果是这样,它用于检索连接字符串的完整“密钥”是什么。该部分可能如下所示:configuration.Get("Data:DefaultConnection:ConnectionString")(与您帖子中的 json 匹配)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-27
      • 2014-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多