如何处理数据访问异常

时间:2011-09-18 14:42:19

标签: c# .net exception-handling

我有3层架构。当用户点击提交按钮时。所有值都设置为业务层。然后进入业务层,调用数据层函数将数据插入数据库。我在数据库中有一个独特的字段。当我为该字段分配非唯一值时,它会在DataLayer处抛出异常。

我需要知道,处理这些案件的正确方法是什么。我们应该在业务层检查它,非唯一值不能进入DataAccess Layer,或者我们应该从Dataaccess层处理异常。另请告诉我,如何处理此类异常并向用户显示商业信息。

我喜欢各种各样的方法 Error No

3 个答案:

答案 0 :(得分:0)

如果要在表中插入唯一值,那么在插入数据库之前检查唯一性会很好。如果它是一个网络应用程序您可以先使用 JQuery AJAX 组合来检查唯一性。 Web服务可以提供帮助,或者.aspx.cs文件中的简单Web方法将通过 Jquery 使用 ajax 进行调用。如果输入不是唯一的,则抛出用户友好的消息

答案 1 :(得分:-1)

  • 您的数据层应捕获sql异常并重新抛出其重复实体的自定义异常
  • 您的业务层应捕获此异常,然后向用户显示该条目重复的友好错误消息

编辑:要检测sql异常是否为重复条目,您可以查看Entity Framework: How to properly handle exceptions that occur due to SQL constraintsUnique Key Violation in SQL Server - Is it safe to assume Error 2627?

答案 2 :(得分:-1)

恕我直言,你应该总是转发这些例外情况。他们就是出于这个原因。如果您必须自己检查字段的唯一性,那么唯一属性的重点是什么?对于你问题的第二部分。我认为用户不应负责提供任何独特的数据。因此,不应向用户显示您的数据访问层必须解决任何唯一性冲突的信息。坦率地说,我无法想到任何需要用户提供数据库范围内的唯一值的情况,这些值无法在幕后的dataaccess层中生成。至于如何处理异常,我认为这取决于数据的性质。如果可以的话,我会丢弃冲突的新输入或合并数据。

你能说一下关于这个系统的更多信息吗?