清洁架构 UI 层包含 Entity Framework 核心参考

Clean Architecture UI layer containing Entity Framework Core Reference

我正在开发一个 .Net 5 项目,我使用了 Clean Architecture pattern 。当我处理并发时,我需要添加对 Web 项目的 EFCore 引用,如下所示。将 EFCore 引用添加到清洁架构模式中的 Web 项目是否正确。 DbUpdateConcurrencyException 需要 EFCore 参考。

 public async Task<IActionResult> EditSubmit(EditProductViewModel editProductViewModel)
    {
        try
        {
            if (!ModelState.IsValid)
            {
                return View("../Product/Edit", editProductViewModel);
            }

            await _productService.UpdateProduct(editProductViewModel);
            ModelState.Clear();
            return View("../Product/Edit", new EditProductViewModel());
        }
        catch (DbUpdateConcurrencyException ex)
        {
            string message = "Product has been changed by another user please go to Product List";
            _log.LogError(message + ":" + ex.ToString());
            return View("../Product/Edit", editProductViewModel);
        }
        catch (Exception ex)
        {
            string message = "Product update failed";
            _log.LogError(message + ":" + ex.ToString());
            return View("../Product/Edit", editProductViewModel);
        }

    }

我的理解是,这对于清洁架构来说是不正确的。我相信您应该创建一个自定义 Exception,也许在您的 Application 层中,然后将其扔到 UI/API 层。如果您在 API 中保持对 EF Core 包的依赖,一旦您决定更改持久性机制(例如不使用 Entity Framework),您还必须更改 UI/API 层,其中 1) 一个新的包引用,以及 2) 一个新的异常类型。