如何在没有实体框架的情况下连接到 ASP.NET Core 中的数据库?

Joe*_*ngh 5 c# asp.net-core asp.net-core-webapi

如何在没有实体框架的情况下从 ASP.NET Core 和 Angular 连接到数据库?

 "ConnectionStrings": {
    "DefaultParkingConnection": "Server=DESKTOP-CD0M0C3\\SQLEXPRESS;Database=ParkingSystem2;Trusted_Connection=True;MultipleActiveResultSets=true;User ID=sa;Password=P@ssw0rd"
  }, 
Run Code Online (Sandbox Code Playgroud)

如何在 Web API 控制器中获取连接字符串?

string constr = ConfigurationManager.ConnectionStrings["DefaultParkingConnection"].ConnectionString;
Run Code Online (Sandbox Code Playgroud)

Rya*_*yan 5

您可以注入IConfigurationapi 控制器:

public class ValuesController : Controller
{
    public IConfiguration _configuration { get; }

    public ValuesController(IConfiguration configuration)
    {
        _configuration = configuration;

        string constr  = _configuration.GetConnectionString("DefaultParkingConnection");
    }
}
Run Code Online (Sandbox Code Playgroud)


iSa*_*rma 5

ASP.Net Core 的工作方式与 ASP.Net 不同,因此您需要将 中定义的连接字符串映射appsettings.json到要在整个应用程序中访问的类或变量。尝试以下方法。创建appSettings.json

{
"ConnectionStrings": {
    "DefaultParkingConnection": "Server=DESKTOP-CD0M0C3\\SQLEXPRESS;Database=ParkingSystem2;Trusted_Connection=True;MultipleActiveResultSets=true;User ID=sa;Password=P@ssw0rd"
  }
}
Run Code Online (Sandbox Code Playgroud)

创建一个新类ConnectionStrings.cs以将其中定义的连接字符串映射appSettings.json到其中:

using System;

namespace Test
{
    public class ConnectionStrings 
    {
        public string DefaultParkingConnection{ get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

在 中Startup.cs,编写以下代码:

public class Startup
{
    public IConfiguration Configuration { get; }

    public Startup(IConfiguration configuration)
    {
        this.Configuration = configuration;
    }

    public void ConfigureServices(IServiceCollection services)
    {
        //Map the configuration
        var connectionSection = Configuration.GetSection("ConnectionStrings");
        services.Configure<ConnectionStrings>(connectionSection );            
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // Configure 
    }
}
Run Code Online (Sandbox Code Playgroud)

现在在控制器中,您可以轻松使用它而无需创建类的实例:

using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;

namespace Test.Controllers
{
    [ApiController]
    [Route("api/account")]
    public class AccountController : ControllerBase
    {
        private readonly ConnectionStrings connectionStrings;

        public AccountController(IOptions<ConnectionStrings> connectionStrings)
        {
            this.connectionStrings = connectionStrings.Value;
        }

        [HttpGet, Route("test")]
        public IActionResult Test()
        {
            return Ok("test");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)