如何使用构造函数访问控制器中的数据库连接
How to access database connection in controller using constructor
我想使用构造函数在控制器中设置数据库连接。目前,我正在使用 using
关键字在每个控制器中设置数据库连接,如下所示。
public class ApplicationDbContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlServer("DefaultConnection");
}
}
控制器是
using System;
using Microsoft.AspNetCore.Mvc;
using static WebApplication1.Models.Model;
namespace WebApplication1.Controllers
{
public class BlogController : Controller
{
public IActionResult Index()
{
using (var db = new ApplicationDbContext ()) {
db.Add(new Blog { Url = "Hello! How are you" });
db.SaveChanges();
return View();
}
}
}
}
在此,我想使用控制器构造函数来设置数据库连接。像这样的东西。
private readonly ApplicationDbContext _db;
public BlogController(ApplicationDbContext db)
{
_db = db;
}
在启动时配置上下文,以便它可以注入控制器
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer("DefaultConnection")
);
并重构上下文以期望其构造函数中的选项,以便选项也可以注入到上下文中。
public class ApplicationDbContext : DbContext {
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options): base(options) {
}
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
}
我想使用构造函数在控制器中设置数据库连接。目前,我正在使用 using
关键字在每个控制器中设置数据库连接,如下所示。
public class ApplicationDbContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlServer("DefaultConnection");
}
}
控制器是
using System;
using Microsoft.AspNetCore.Mvc;
using static WebApplication1.Models.Model;
namespace WebApplication1.Controllers
{
public class BlogController : Controller
{
public IActionResult Index()
{
using (var db = new ApplicationDbContext ()) {
db.Add(new Blog { Url = "Hello! How are you" });
db.SaveChanges();
return View();
}
}
}
}
在此,我想使用控制器构造函数来设置数据库连接。像这样的东西。
private readonly ApplicationDbContext _db;
public BlogController(ApplicationDbContext db)
{
_db = db;
}
在启动时配置上下文,以便它可以注入控制器
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer("DefaultConnection")
);
并重构上下文以期望其构造函数中的选项,以便选项也可以注入到上下文中。
public class ApplicationDbContext : DbContext {
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options): base(options) {
}
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
}