在我的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还是控制器?