如何在使用DTO时处理异常

Pun*_*ora 3 c# wcf dto

我有一个解决方案结构,其中契约(数据/服务等)与业务实体位于不同的项目中,我使用Automapper在第三个服务实现项目之间进行映射.

WCFProject.Service.BusinessLayer
WCFProject.Service.Contracts
WCFProject.Service.Impl
Run Code Online (Sandbox Code Playgroud)

我的ServiceImpl引用了这两个其他项目,从DataContract到BusinessEntity的自动化在这里完成,然后在BusinessEntity对象上调用正确的方法

现在,我想添加一些FaultContracts,然后在我的业务逻辑中使用它们来抛出正确的异常.但是如果我将它们添加到Contracts项目(这是理想的,因为我想将所有合同保存在一起),那么我需要BusinessLayer引用合同以在BusinessLayer中使用它们.如果可能的话,我想保持这些独立性,并且只处理这两层之间的DTO.这是我的一个有效的方法,我想让这两个项目保持独立吗?你也映射了例外吗?或者有更好的方法来解决这个问题.

Pet*_*ter 6

您的业​​务层应该没有上述层的知识.所以它不知道你有一个wcf层在上面.投掷错误是来自你的wcf层,在那里捕捉你的例外和你想要做的事情.业务异常可以映射到wcf错误,但是如果你有一个nullpointer异常的连接,你只想给出一个错误的一般错误.

可以在此处找到服务行为中处理/映射错误的示例: WCF-异常处理