如何解决将 DbContext 传递给类库
我正在开发一个 API,以使用实体框架从数据库中获取数据。我有一个类库来处理我的通用任务,包括 Repository、UnitOfWork 等。我的 UnitOfWork 类如下。
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using AppPermission.Data.DataContext;
using AppPermission.Data.Models;
using AppPermission.Data.Repositories;
namespace AppPermission.Common.UnitOfWork
{
public class UnitOfWork : IUnitOfWork
{
private readonly DbContext dbContext;
public UnitOfWork(DbContext context)
{
dbContext = context;
}
public int SaveChanges()
{
return dbContext.SaveChanges();
}
public async Task<bool> SaveChangesAsync()
{
return await dbContext.SaveChangesAsync() > 0;
}
public void Dispose()
{
dbContext.Dispose();
GC.SuppressFinalize(this);
}
}
}
我的 API 的 ConfigureServices 如下
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<AppDbContext>();
services.AddSession();
services.AddControllersWithViews();
services.AddRazorPages();
services.AddScoped<IUnitOfWork,UnitOfWork>();
}
我想将API启动中注册的AppDbContext传递给类库中的UnitOfWork。 StackOverflow 中有几个解决方案 using(services.BuildServiceProvider),但在第一次 API 调用 (GetAll) 后连接被丢弃。有什么办法吗?如果我将我的 UnitOfWork 放在 API 项目本身并更改 UnitOfWork 中的构造函数以接受 AppDbContext,它可以正常工作吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。