C# 如何为我的asp.net核心mvc编写连接字符串

C# 如何为我的asp.net核心mvc编写连接字符串,c#,asp.net-core-mvc,C#,Asp.net Core Mvc,虽然我看过很多解决方案,但我似乎无法应用或理解如何在我的asp.net核心mvc程序中使用连接字符串 这是我的appsettings.json文件: { "Logging":{ "Debug":{ "LogLevel":{ "Default":"Information" } }, "AllowedHosts":

虽然我看过很多解决方案,但我似乎无法应用或理解如何在我的asp.net核心mvc程序中使用连接字符串

这是我的appsettings.json文件:

{
  "Logging":{
    "Debug":{
      "LogLevel":{
        "Default":"Information"
      }
    },
    "AllowedHosts":"*",
    "ConnectionString":{
      "connectionString":"Server=W1571415\\MSSQLSERVER01;Database=***********;UserId=*********;Password=***********;"
    }
  },
  "dependencies":{
    "Microsoft.Extensions.Caching.Memory":"1.0.0",
    "Microsoft.AspNetCore.Session":"1.0.0"
  }
}
我的startup.cs文件代码:

使用HospitalApp.Infrastructure;
使用Microsoft.AspNetCore.Builder;
使用Microsoft.AspNetCore.Hosting;
使用Microsoft.AspNetCore.Http;
使用Microsoft.AspNetCore.Localization;
使用Microsoft.AspNetCore.Mvc;
使用Microsoft.AspNetCore.Mvc.Razor;
使用Microsoft.EntityFrameworkCore;
使用Microsoft.Extensions.Configuration;
使用Microsoft.Extensions.DependencyInjection;
使用Microsoft.Extensions.Logging;
使用System.Collections.Generic;
利用制度全球化;
//此文件用于应用程序行为
命名空间HospitalApp
{
/// 
///Startup类包含方法scuh as ConfigureServices,用于配置运行应用程序的环境。
/// 
公营创业
{
专用只读ILogger\u记录器;
/// 
///当遇到.UseStartup()时,Program.cs中的控件出现在这里。它使用类型IConfiguration的参数配置和类型ILogger的记录器。
/// 
公共启动(IConfiguration配置,ILogger记录器)
{
配置=配置;
_记录器=记录器;
}
/// 
///此方法配置的类型为IConfiguration。
/// 
公共IConfiguration配置{get;}
/// 
///此方法由运行时调用。请使用此方法将服务添加到容器中。
/// 
///服务属于IServiceCollection类型,用于指定收集到服务描述符的契约。
public void配置服务(IServiceCollection服务)
{
配置(选项=>
{
//此lambda确定给定请求是否需要非必要cookie的用户同意。
options.checkApprovered=context=>true;
options.MinimumSameSitePolicy=SameSiteMode.None;
});
////services.AddSession(so=>
////{
////so.IdleTimeout=从秒开始的时间跨度(60);
////});
services.AddLocalization(options=>options.ResourcesPath=“Resources”);
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
.AddViewLocalization(
LanguageViewLocationExpanderFormat.Suffix,
选项=>{options.ResourcesPath=“Resources”;})
.AddDataAnnotationsLocalization();
//依赖注入
services.AddSingleton();
//_logger.LogInformation(“添加到服务中的存储”);
services.AddDistributedMemoryCache();//添加IDistributedCache的默认内存实现
services.AddSession();
}
/// 
///此方法由运行时调用。请使用此方法配置HTTP请求管道。
/// 
///这提供了确认应用程序请求管道的机制。
///提供有关运行应用程序的webhsoting环境的信息。
///表示用于配置日志记录系统的类型。
///它属于ILogger类型,是记录器的通用接口。
public void Configure(IApplicationBuilder应用程序、IHostingEnvironment环境、ILogger工厂、ILogger记录器)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
AddFile(“Logs/mylog-{Date}.txt”);
_logger.LogInformation(“在开发环境中”);
}
其他的
{
app.UseExceptionHandler(“/Home/Error”);
//默认的HSTS值为30天。您可能希望在生产场景中更改此值,请参阅https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseSession();
var文化=新列表
{
新文化信息(“en”),
新文化信息(“pt”)
};
app.UseRequestLocalization(选项=>{
options.DefaultRequestCulture=新的RequestCulture(“en-US”);
options.SupportedCultures=文化;
options.supporteducultures=文化;
});
app.UseMvc(路由=>
{
routes.MapRoute(
名称:“默认”,
模板:“{controller=Home}/{action=Index}/{id?}”);
});
}
}
}
我没有使用DBContext文件,所以这里是我的基础结构文件,它包含IDBRepository和DbRepository文件。我必须在dbrepository文件中使用这个连接字符串。那么,如何着手呢

namespace HospitalApp.Infrastructure
{
/// 
///此类用于与MS SQL Server建立数据连接。
///此处指定的connectionString存储数据库名称,数据源指定服务器名称。
/// 
公共类DbRepository:IDBRository
{
///这里我需要从APPSETTING.JSON文件中指定连接字符串。
//string connectionString=“集成安全性=SSPI;持久安全性信息=False;初始目录=医院虚拟;数据源=W1571415\\MSSQLSERVER01;应用程序名称=医院”;
字符串连接字符串=@“服务器=W1571415\MSSQLSERVER01;数据库=HospitalDummy;用户Id=hospitaluser;密码=abc@123;";
/// 
///这个函数
public DbRepository(DbContextOptions<DbRepository> options) : base(options) 
{
}
public class DbRepository : IDbRepository
{
    private string _connectionString;

    public DbRepository(string connection)
    {
        _connectionString = connection;
    }

    public string GetConnectionString()
    {
        return _connectionString;
    }
}
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using HospitalApp.Infrastructure;

namespace Test
{
    public class Startup
    {
        public IConfiguration Configuration { get; }

        public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                .AddEnvironmentVariables();
                Configuration = builder.Build();
        }

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            string connectionString = Configuration["ConnectionString:connectionString"];
            //  this is how a class inheriting dbcontext can be called
            //  services.AddDbContext<DbRepository>(options => options.UseSqlServer(connectionString));
            //  or call IDbRepository as a custom service
            services.AddScoped<IDbRepository>(repository => new DbRepository(connectionString));
        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env) { //  ... }
    }
}
public class HomeController : Controller
{
    private readonly IDbRepository _dbrepository;

    public HomeController(IDbRepository dbrepository)
    {
        _dbrepository = dbrepository;
    }

    [HttpGet]
    public ViewResult Home()
    {
        ViewBag.ConnectionString = _dbrepository.GetConnectionString();
        return View("Home");
    }
}
<h1>ConnectionString</h1>
<b>@ViewBag.ConnectionString</b>
{
    "Logging": {
        "LogLevel": {
            "Default": "Information"
        }
    },
    "AllowedHosts": "*",
    "ConnectionString": {
        "connectionString": "Server=W1571415\\MSSQLSERVER01;Database=***********;UserId=*********;Password=***********;"
    },
    "dependencies": {
        "Microsoft.Extensions.Caching.Memory": "1.0.0",
        "Microsoft.AspNetCore.Session": "1.0.0"
    }
}