• 主页
  • ASP
  • .NET Framework
  • Web Services
  • VB
  • VC
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • LINQ
hyifeng 2005年06月27日
如何看懂数据库抛出的exception
耳熏目染了好久的hibernate,
刚好,亲身使用了一段时间的nhibernate。
实践上的问题真不少,
lazy session生存管理,性能优化等问题。

现在遇到棘手的事情是数据库异常的判断。

本来,约束我是做在业务逻辑里面的。
在保存数据库前,主动检查数据库存在的冲突。
因为防止并发出错,把检查和更新的一段临界区代码lock起来。
在效率方面我已经是做出最大的妥协了,
为了检查,多次的数据库交互,还有并发保护。
可是,如果在更新关联到collection时,我是不是把collection一个一个地检查?
在我还没有修改过collection检查?更或者,这个lazy collection还没读出来?

我翻看了hibernate的文档,中可能有两个东西能帮上忙。beforeUpdate volidatable
但即使上面两个真能解决这个问题,还是要考虑并发。

但现在我把约束做在了数据库上。
在处理业务代码中,只管调用update和catch exception。
在数据层中,通过判断数据库异常(例如,是违反了表中的那一个约束),
转换成业务异常,再往业务层抛。

可是,我没办法从exception中判断出触发的原因,即使是SqlError也没有。
我想到的唯一的信息可获取于 exception.Message,
通过字符串搜索?我无法忍受。

直接把message输出也不符合我的要求。

意思是说,我没办法用数据库的约束功能?
...全文
66 点赞 收藏 2
写回复
2 条回复

还没有回复,快来抢沙发~

发动态
发帖子
.NET技术社区
创建于2007-09-28

4.8w+

社区成员

66.8w+

社区内容

.NET技术交流专区
社区公告
暂无公告