我是否需要在控制器mvc6中处理对象

时间:2016-10-04 19:55:00

标签: c# asp.net asp.net-core-mvc idisposable

我正在构建一个使用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对象在请求中是相同的,但在不同的请求中是不同的

这是否意味着请求完成后对象将被销毁?或者我需要将其丢弃在控制器中吗?

0 个答案:

没有答案