How can I connect to a database in ASP.NET Core without Entity Framework?

给你一囗甜甜゛ 提交于 2020-03-16 07:09:10

问题


How can I connect to a database from ASP.NET Core and Angular without Entity Framework?

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

How can I get connection string in Web API controller?

string constr = ConfigurationManager.ConnectionStrings["DefaultParkingConnection"].ConnectionString;

回答1:


ASP.Net Core works different than ASP.Net, so you need to map the connection strings defined in appsettings.json to a class or variable to be accessed throughout the application. Try the following approach. Create appSettings.json:

{
"ConnectionStrings": {
    "DefaultParkingConnection": "Server=DESKTOP-CD0M0C3\\SQLEXPRESS;Database=ParkingSystem2;Trusted_Connection=True;MultipleActiveResultSets=true;User ID=sa;Password=P@ssw0rd"
  }
}

Create a new class ConnectionStrings.cs to map the connection strings defined in appSettings.json to it:

using System;

namespace Test
{
    public class ConnectionStrings 
    {
        public string DefaultParkingConnection{ get; set; }
    }
}

In Startup.cs, write the following code:

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 
    }
}

Now in controllers, you can easily use it without creating the instance of the class:

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");
        }
    }
}



回答2:


Microsoft has just release sqlclient for asp.net core for access to ado.net.

from the packagemanager

Install-Package Microsoft.Data.SqlClient -Version 1.0.19269.1



回答3:


You could inject IConfiguration in api controller:

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

    public ValuesController(IConfiguration configuration)
    {
        _configuration = configuration;

        string constr  = _configuration.GetConnectionString("DefaultParkingConnection");
    }
}


来源:https://stackoverflow.com/questions/58940341/how-can-i-connect-to-a-database-in-asp-net-core-without-entity-framework

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!