【发布时间】:2011-06-03 11:30:42
【问题描述】:
如果我是正确的,那么为数据访问对象提供接口背后的想法是,实际存储,无论是数据库、文件还是 XML,对客户端代码都是隐藏的。但是,如果您使用 SqlCommand 和 SqlConnections 并且出现问题并引发 SqlException,则客户端代码会意识到实现以及我们使用 MS Sql 服务器作为数据库的事实。所以我们可以改变客户端代码来捕获 DbException。但随后我们让客户意识到实施。所以这对我来说似乎是一个泄漏的实现。
我认为正确的方法是包装到客户端代码可以响应的自定义 DAL 异常中。
- 数据库不太可能发生变化。
- 存储类型(数据库、文件、xml)更不可能改变。
在这种情况下,客户端代码应该只处理 SqlException 本身。客户端代码耦合更紧密,但老实说,我没有看到它发生变化。还是仍然值得包装异常?
【问题讨论】:
-
您有什么样的处理方式?重试死锁?增加超时?一种解决方案是将任何处理代码放在数据访问层中。