【问题标题】:dotnet core: How do I get Entity Framework to read the connection string from a config file?dotnet core:如何让实体框架从配置文件中读取连接字符串?
【发布时间】:2018-07-13 12:11:50
【问题描述】:

我正在将 .NET 4.x 应用程序(类库和 MS 测试项目,无 Web 应用程序)迁移到 dotnet core 2.1,但我无法弄清楚如何将我的 SQL 数据库连接字符串传递给实体框架。

在 .NET 4.x 中,我有 app.config,这个代码和实体框架神奇地使用了 app.config 文件中的连接字符串。简单:)

<connectionStrings>
<add name="ApplicationDataConnectionString" connectionString="" providerName="System.Data.SqlClient" />

以及传入数据库名称的 DBContext

public class ApplicationDataDbContext : DbContext
{
    …

    public ApplicationDataDbContext(string databaseName) : base("name=ApplicationDataConnectionString")
    {
}

Dotnet 核心没有 app.config 和配置管理器。所以……我可以从配置文件中读取连接字符串并执行类似的操作,但我不知道如何从那里将其传递给 DBContext……而且这种方法也感觉不对。

public class ApplicationDataDbContext : DbContext
{
    …

    public ApplicationDataDbContext(string databaseName) : base("name=ApplicationDataConnectionString")
    {

            _config = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .Build();

            var myConnectionString = _config.GetConnectionString("ApplicationData");
}

这就是我使用 DBContext 的方式

public void SomeMethod()
    {
        using (var context = new ApplicationDataDbContext(Common.Constants.ApplicationDataDBName))
        {
          ...
        }
    }

【问题讨论】:

  • 您将拥有一个包含您的连接字符串的appsettings.json{ "ConnectionStrings": { "YourDatabase": "Server=(localdb)\\mssqllocaldb;Database=YourDb;Trusted_Connection=True;" }, }
  • 如果我这样做,实体框架会像我在旧 .net 中习惯的那样加载连接字符串吗?
  • 完美。谢谢你:)
  • 我让它工作了 :)

标签: entity-framework .net-core asp.net-core-2.0


【解决方案1】:

我按照这些说明让它工作了。

https://docs.microsoft.com/en-us/ef/core/miscellaneous/connection-strings#aspnet-core

请注意,您需要安装 EF 的 dotnet 核心版本。我已经安装了网络框架版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 2020-01-13
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多