c# - CRUD 类库设计,返回有关业务逻辑失败的有用消息,这并不异常(exception)

标签 c# .net class-design

我正在构建一个基本的 CRUD 库,我预计它会在本地(添加引用)和 wcf(添加服务引用)环境中使用。

CRUD 设置的创建、更新和删除部分(具有更复杂的业务规则)的最佳返回类型是什么?

我希望能够最大限度地减少线路上的来回,但我也想为我的客户提供有意义的信息,说明操作何时会失败我的业务逻辑,但在技术上是有效的(因此它不是异常(exception)) .

以 Person 类的 CRUD 为例,它具有以下字段:FirstName、MiddleName LastName 和 Date of Brith。 First、Last 和 DOB 是必需的,但 Middle 不是。

我应该如何将业务逻辑失败反馈给客户? IE。 “您必须为 FirstName 指定一个值。”

  1. 这是我应该扔的地方吗 异常(exception)? (感觉不像 一个异常(exception)情况,所以我认为 不是,但我可能是错的)。
  2. 我应该使用 void 和一个“out”参数吗?如果可以,应该是什么类型?
  3. 我应该使用对象返回类型并将发生的情况的数据放入其中吗?
  4. 我完全错过的其他选项?

最佳答案

出于性能原因,应在您的客户端层执行初始输入验证。 (即:不要费心通过线路发送错误数据。)在客户端层,输入验证失败实际上是一个非常预期的问题,不应抛出异常。但是,如果您将此“早期”验证放在客户端层中,则在任何更深的层中遇到的数据验证失败都可以合理地视为意外问题,因此在这些层中抛出数据验证错误的异常并不是不合适的。

关于c# - CRUD 类库设计,返回有关业务逻辑失败的有用消息,这并不异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1632440/

相关文章:

.net - 为什么在 Linux 上运行 .net 核心控制台应用程序时会出现 "Resource file"resx 错误?

c# - 如何更改 DataContractSerializer 文本编码?

oop - 如何打破我的程序编码习惯?

c++ - 使用 Qt 信号和槽与直接调用方法

c# - OData 在 Entity Framework 中联合数据的 "View"

c# - EF : When executing a command, 参数必须完全是数据库参数或值

c# - 公开原始模型而不是单个属性时的 INotifyPropertyChanged

java - 您使用过或见过的最好的 toString 构建器类是什么?是什么让它变得美好

c# 使用管道获取输出流

c# - 在从 MS SQL Server 转换为 MySQL 时无法保存 Unicode