.Net核心Dapper连接字符串?

eat*_*ode 3 asp.net-core-mvc asp.net-core

我正在设置我的第一个.NET Core应用程序。我要为ORM使用用户Dapper(1.50.0-rc2)。

我已将以下内容添加到我的appsettings.json文件中。

"Data": {
    "DefaultConnection": {
        "ConnectionString": "user id=exampleusername;password=examplepassword;Data Source=db.example.com;Database=exampledb;"
    }
},
Run Code Online (Sandbox Code Playgroud)

我对如何获取ConnectionString的值感到困惑。由于.NET Core如此新,在线示例无处不在,似乎没有一个实际的例子。

tar*_*arn 7

我的演练:

  1. 在appsettings.json中添加ConnectionStrings部分:

    "ConnectionStrings": {
       "cs1": "Server=xxxx;Port=xxxx;Database=xxxx; User Id=xxxx;Password=xxxx;Pooling=false;",
       "cs2": "Server=xxxx;Port=xxxx;Database=xxxx; User Id=xxxx;Password=xxxx;Pooling=false;",
       "cs3": "Server=xxxx;Port=xxxx;Database=xxxx; User Id=xxxx;Password=xxxx;Pooling=false;"
    },
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建表示连接字符串部分的类:

    public class ConnectionStringList
    {
        public string cs1 { get; set; }
        public string cs2 { get; set; }
        public string cs3 { get; set; }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 打开Startup.cs,将上面的配置类添加到ConfigureServices中的services集合中:

    public void ConfigureServices(IServiceCollection services)
    {
        ...
        services.AddOptions();
        services.Configure<ConnectionStringList>(Configuration.GetSection("ConnectionStrings"));
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. IOptions<ConnectionStringList>注入到您的控制器/服务等中,并从Value属性中检索您的连接字符串值:

    public SampleController(IOptions<ConnectionStringList> connectionStrings)
    {
        string cs1 = connectionStrings.Value.cs1;
        ...
    
    Run Code Online (Sandbox Code Playgroud)


Mkr*_*yan 5

我在GitHub 存储库上有一个用于.NET Core的示例控制台应用程序

设置阶段

var builder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
Run Code Online (Sandbox Code Playgroud)

建立阶段

Configuration = builder.Build();

使用阶段

Configuration.GetConnectionString("DefaultConnection")

您可以将此值用于 Dapper

聚苯乙烯

您需要将3个依赖项添加到您的 project.json

"Microsoft.Extensions.Configuration": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final"
Run Code Online (Sandbox Code Playgroud)

更新

具体解决方案

使Configuration成为静态属性并添加私有setter

public static IConfigurationRoot Configuration { get; private set; }

并更改您的扩展名

namespace GamesCore.Extensions 
{
    public class ScoreExtensions 
    { 
        private static string dataConnectionString = Startup.Configuration.GetConnectionString("DefaultConnection"); 
    } 
}
Run Code Online (Sandbox Code Playgroud)

对于.NET Core 2.0,所有内容都是相同的,并且仅更改了项目文件,因此您需要使用以下软件包:

  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="2.0.2" />
    <PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.0.2" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.2" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)