ASP.NET Core 中使用瞬态 DbContext 的解决方法如下:
services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")),
ServiceLifetime.Transient);
public interface IDbContextFactory
{
ApplicationDbContext Create();
}
public class DbContextFactory : IDbContextFactory
{
private readonly ApplicationDbContext _dbContext;
public DbContextFactory(ApplicationDbContext dbContext)
{
_dbContext = dbContext;
}
public ApplicationDbContext Create()
{
return _dbContext;
}
}
public class HomeController : Controller
{
private readonly IDbContextFactory _dbContextFactory;
public HomeController(IDbContextFactory dbContextFactory)
{
_dbContextFactory = dbContextFactory;
}
public IActionResult Index()
{
using (var dbContext = _dbContextFactory.Create())
{
// 使用 DbContext 进行操作
var data = dbContext.SomeEntity.ToList();
return View(data);
}
}
}
注意:使用 using 语句创建 DbContext 实例是为了确保在使用完毕后及时释放资源。
这样,就可以在 ASP.NET Core 中使用瞬态 DbContext 了。