如何在MVC Core 2.1中管理dbcontext

时间:2019-04-01 00:54:44

标签: c# dependency-injection .net-core

在我的MVC核心Web应用程序中,我具有startup.cs文件中显示的所有BL(业务逻辑)注入:

OCTAVE_HOME/lib/octave/VERSION/startup/octaverc

然后每个BL看起来都像这样:

services.AddScoped<UserBL>();

在我的BaseBL中,有诸如插入,更新和删除之类的基本内容,因此在我的控制器中,我这样称呼我的BL(在控制器中的DI之后)

 public class UserBL : BaseBL<User>
{
    #region Contructor
    private readonly CRUDContext _context;

    public UserBL(CRUDContext context, ILogger<User> logger = null) : base(context)
    {
        _context = context;

    }
    #endregion
    #region Metodos Locales 
    public async Task<bool> UserExistsAsync(string UserName)
    {
        try
        {
            return !await _context.User.AnyAsync(e => e.UserName == UserName);
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "Error UserExistsAsync");
            return false;
        }
        }
        #endregion
}

我的问题:

1-我是否应该在每个BL中创建一个dbcontext,这样我就不需要在控制器中每个BL上都添加DI? (我的意思是更干净的只是调用userBL();而BL创建dbcontext吗?)

2-在哪里最好地处理错误? BL还是控制器?

0 个答案:

没有答案