【问题标题】:.NET Core 2.0 connection string for Mac and PC适用于 Mac 和 PC 的 .NET Core 2.0 连接字符串
【发布时间】:2018-03-23 16:37:13
【问题描述】:

我刚刚开始从事 .NET Core 2 项目。我使用的是 Mac,而其他开发人员使用的是 Windows PC。但是,Mac 上的 SQL Server 存在一些问题。首先,SQL Server 不能在 Mac 上运行。这可以通过在本地 docker 容器中运行 SQL Server 来解决:https://medium.com/@reverentgeek/sql-server-running-on-a-mac-3efafda48861

第二个问题是大多数教程和本地开发/测试中使用的 LocalDB 也不适用于 mac,如Could not resolve host '(localdb)' on Visual Studio for MacOS 所述。

我的问题是,在开发中为 PC 或 Mac 加载正确连接字符串的好方法是什么?我正在考虑像这样添加多个字符串,但不确定什么是最佳做法。

appsettings.json

"ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=myWindowsDb;Trusted_Connection=True;MultipleActiveResultSets=true",
    "MacConnection": "Server=localhost;Database=myMacDb;User Id = someuser;Password=mySecretMacPassword;Initial Catalog = myMacDb;"
},

【问题讨论】:

  • 如果所有开发人员都在同一个网络上,您只需在一台机器上设置 SQL Server 并供所有开发人员访问。这样,每个人的连接字符串都将完全相同,并且不需要将对数据库的更改复制到所有机器上,因此可以保证它们都使用相同的数据库版本。在这种情况下,只需将(localdb)localhost 更改为数据库服务器的IP。
  • 听起来您可能想要使用开发级应用设置,每个开发人员都可以针对他们的环境进行自定义。
  • 或者您可以从环境变量中读取连接字符串。您可以自定义配置系统以读取环境变量,并使这些变量优先于 appsettings 文件中的值。

标签: c# asp.net-core-2.0


【解决方案1】:

由于这仅适用于您自己的个人开发环境,因此您不应在项目中对appsettings.json 进行任何更改以解决它。相反,您可以创建一个单独的 appsettings.Development.json 文件,其中包含:

"ConnectionStrings": {
    "DefaultConnection": "Server=localhost;Database=myMacDb;User Id = someuser;Password=mySecretMacPassword;Initial Catalog = myMacDb;"
}

默认情况下,ASP.NET Core 将在 appsettings.json 之后加载它并覆盖和读取之前的值。我会将此文件排除在源代码管理之外,并将其用于个人开发人员设置。

【讨论】:

    猜你喜欢
    • 2018-05-28
    • 2017-05-06
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    相关资源
    最近更新 更多