【问题标题】:net core 1 (dnx 4.5.1) with enterpriselibrary 6 - setting up the connection stringnet core 1 (dnx 4.5.1) with enterpriselibrary 6 - 设置连接字符串
【发布时间】:2016-03-31 10:42:42
【问题描述】:

我在使用 net core 1 (dnx 4.5.1) 运行企业库数据访问块时遇到了大问题

如何设置 entlib 的默认连接字符串

我的 appsettings.json "ConnectionString": "Server=localhost\sqlexpress;Initial Catalog=blind;User Id=blind;Password=blind"

这是我的问题(没有默认连接字符串) 数据库 db = DatabaseFactory.CreateDatabase();

如何将 appsettings ConnectionString 传递给 entlib 数据库工厂

任何帮助将不胜感激

【问题讨论】:

    标签: connection-string asp.net-core-1.0 enterprise-library-6


    【解决方案1】:

    我知道这是一个老问题,但我有类似的设置(但使用 .NET Core 2.0),我花了一段时间才弄清楚如何在不使用 web.config 管理的情况下设置默认数据库连接。

    我所做的是在 appsettings.json 中包含默认数据库和所有连接字符串,然后在我的 Startup 类中,我将 appsettings.json 读入我定义的用于存储默认数据库名称和连接字符串的对象并使用 DatabaseFactory.SetDatabase 配置默认 + 命名数据库。

    DatabaseFactory.SetDatabases() Definition

    public class DataConfiguration
    {
        public string DefaultDatabase { get; set; }
        public List<ConnectionStringSettings> ConnectionStrings { get; set; }
    }
    
    
    
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            //Get the Database Connections from appsettings.json
            DataConfig = configuration.Get<DataConfiguration>(); 
    
            var defaultDb = DataConfig.ConnectionStrings?.Find(c => c.Name == DataConfig.DefaultDatabase);
            DatabaseFactory.SetDatabases(() => new SqlDatabase(defaultDb.ConnectionString), GetDatabase);
    
            Configuration = configuration;
        }
    
        public Database GetDatabase(string name)
        {
            var dbInfo = DataConfig.ConnectionStrings.Find(c => c.Name == name);
    
            if (dbInfo.ProviderName == "System.Data.SqlClient")
            {
                return new SqlDatabase(dbInfo.ConnectionString);
            }
    
            return new MySqlDatabase(dbInfo.ConnectionString);
        }
    

    }

    【讨论】:

      【解决方案2】:

      只要有文档,我总是建议阅读它,因为它通常很好。这是其中一个示例,请查看"Getting Started with ASP.NET 5 and Entity Framework 6"。您需要做几件事来确保正确配置。

      设置您的连接字符串和DI

      public class ApplicationDbContext : DbContext
      {
          public ApplicationDbContext(string nameOrConnectionString) 
              : base(nameOrConnectionString)
          {
          }
      }
      

      另外,请注意配置中的路径,它似乎与您的不同。

      public void ConfigureServices(IServiceCollection services)
      {
          services.AddScoped((_) => 
              new ApplicationDbContext(
                  Configuration["Data:DefaultConnection:ConnectionString"]));
      
          // Configure remaining services
      }
      

      【讨论】:

      • 为什么随机投反对票,如果这对你不起作用——也许你应该具体分享一下原因?
      • 我的猜测是链接和示例特定于实体框架,并且 OP 正在引用企业库。
      猜你喜欢
      • 2021-10-29
      • 1970-01-01
      • 2019-01-07
      • 1970-01-01
      • 2020-04-14
      • 2016-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多