微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.net – 如何捕获数据库错误并将其转换为业务层的有意义的信息?

通常我必须在数据库中插入一些数据,不能插入,因为该表有约束阻止我这样做.随着我正在开发的应用程序,一些业务规则(例如“没有两个具有相同ID类型和号码的人”或“XXXX产品已经注册”)被强制使用UNIQUE或复合密钥和其他机制.虽然我知道DBMS抛出一个错误消息(如ORA-6346或)我不知道如何捕获.net 4.0中的这些错误,并将它们转换为对业务层有意义的错误.

作为一个例子:我看到一个插入机制,询问DB是否已经存在,然后继续插入数据(如果不是这样).我只想使用查询和捕获数据库约束违例错误,因为我觉得第一种方式效率很低(DB可以提醒你有关于重复的错误).

如何实现这样的东西?

注意:我认为可以从数据库中捕获异常,并使用其ORA-xxxx代码来测试发生了什么.如果错误消息显示哪个约束(…的名称)已经被破坏,我不记得精度,但业务层代码可以包含具有约束名称的常量,并从中知道发生了什么.

解决方法

你应该在这里做什么,这取决于你的系统架构,以及你对放置业务逻辑的态度.

许多系统架构师更倾向于将数据库用作愚蠢的数据存储,并实现您在中间/应用层中谈论的错误处理和完整性检查的类型.这是一个非常有效的方法,特别适用于需要定期更小版本的系统,其中业务逻辑需要定期更改(更容易重新分配可执行周期而不是协调数据库版本),以及数据的位置模型相当简单.

另一种方法是将一些明确定义的半永久业务逻辑放入数据库层.当数据模型更复杂时,这是特别强大的,你有一个很好的DBA!

原文地址:https://www.jb51.cc/mssql/82145.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐