c# - 使用未找到的实体调用服务操作

标签 c# domain-driven-design repository-pattern

我正在使用 Domain Driven Design (DDD) .

我对我的应用程序服务 IUserService 进行了以下操作:

public void EnableUser(int userId)
{
    var user = userRepository.SelectById(userId);
    if (user == null)
    {
        //??
    }

    user.Enabled= true;
    userRepository.Save(usuario);
}

我应该抛出自定义异常吗? 如果是,我应该将自定义异常放在我的应用程序结构中的什么位置?

最佳答案

如果您的 UserService 无法处理用户不存在的情况,那么一定要抛出异常。我认为创建自定义异常将有助于区分其他潜在异常,在这种情况下,您将如何处理它们将在该异常类型的处理程序中指定。

在何处处理异常取决于您的系统设计方式。您不希望它们被处理得太远以至于上下文丢失。对于此示例,如果启用用户是按钮单击或其他用户操作的结果,则启动该调用的事件或方法最有可能处理出现问题时发生的任何异常,并适本地通知用户并记录什么发生了。

关于c# - 使用未找到的实体调用服务操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28918182/

相关文章:

c# - 从代码背后在Viewmodel中设置属性

带链接的 C# WPF 文本

c# - SELECT语句中的C#SQLite参数-依赖组合框问题

entity-framework - 存储库模式和 Entity Framework

c# - Repository Pattern 方法标准化

c# - Entity Framework 更改跟踪

c# - 带有 AngularJs (SPA) Web 界面的 DDD 项目……这是个好主意吗?

domain-driven-design - 在 DDD 中,值​​对象的实际优势是什么?

domain-driven-design - 在命令处理程序/域服务中使用查询模型

design-patterns - 数据映射器模式与存储库模式有何不同?