我正在构建一个使用ASP.Net Core MVC6的小应用程序。
在ConfigureServices
中,我会像这样注入我的存储库:
...
services.AddScoped<IRepository<User>, AccountRepository>();
...
我通过清理db上下文实现了dispose模式。
以下是代码:
public class AccountRepository : IRepository<User>
{
private readonly Db _context;
public AccountRepository(Db context)
{
_context = context;
}
public void Add(User obj)
{
_context.Users.Add(obj);
_context.SaveChanges();
}
public void Update(User obj)
{
_context.Users.Update(obj);
_context.SaveChanges();
}
#region Get
public User Get(string id)
{
return _context.Users.FirstOrDefault(e => e.Name == id);
}
#endregion Get
#region Destroy
protected virtual void Dispose(bool disposing)
{
if (!this.disposed)
{
if (disposing)
{
_context.Dispose();
}
}
this.disposed = true;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
#endregion Destroy
}
我想知道是否还需要在我的控制器中处理存储库。
public class AccountController : Controller
{
private readonly IRepository<User> _accountRepository;
// Do I need a dispose in here??
public AccountController(IRepository<User> repository)
{
_accountRepository = repository;
}
public IActionResult Index()
{
return View();
}
}
在doc中,它说:
Scoped对象在请求中是相同的,但在不同的请求中是不同的
这是否意味着请求完成后对象将被销毁?或者我需要将其丢弃在控制器中吗?