如果您在 .NET Standard 2.0 类库中定义 DAL,则可以同时使用 SqlConnection 和 SqlCommand,例如:
public class MyDal
{
private readonly string _connectionString;
public MyDal(string connectionString)
{
_connectionString = connectionString;
}
public IEnumerable<string> GetSomeData()
{
using (SqlConnection conn = new SqlConnection())
{
using (SqlCommand command = new SqlCommand(_connectionString, conn))
{
...
}
}
}
}
然后从 ASP.NET Core 应用程序中添加对库的引用。
使用对依赖注入的内置支持,您可以使用IConfiguration 注入控制器:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddSingleton(Configuration);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
app.UseMvc();
}
}
...您像这样使用它来提取连接字符串:
public class ValuesController : Controller
{
private readonly IConfiguration _config;
public ValuesController(IConfiguration config)
{
_config = config;
}
[HttpGet]
public IEnumerable<string> Get()
{
MyDal dal = new MyDal(_config.GetConnectionString("conn"));
return dal.GetSomeData();
}
}
连接字符串本身在appsettings.json中定义:
{
"ConnectionStrings": {
"conn": "Server=localhost;Database=database;Trusted_Connection=True;"
},
"Logging": {
"IncludeScopes": false,
"Debug": {
"LogLevel": {
"Default": "Warning"
}
},
"Console": {
"LogLevel": {
"Default": "Warning"
}
}
}