C#如何实现执行多项检查的Save方法?

时间:2011-04-11 08:48:41

标签: c#

通常我必须处理一个save方法,在保存到数据库之前必须检查一些事情。

例如,我检查的内容是空属性,以及取决于其他属性的值。

我一直在努力实现这样的事情。我问自己的问题是:

  • 我应该使用布尔值作为Save方法的返回值吗?在客户端代码中,检查它是否为false,向最终用户显示一条消息框:“保存失败”。但问题是,我无法向用户显示为什么保存失败。所以我不太喜欢这个。
  • 在我的Save方法中,我应该抛出异常吗?因此,当检查失败时,会抛出异常?
  • 什么都不做。检查失败时,不要做任何事情。但我认为这不是一个真正的选择。

我在想,你是如何实现这个的?有种模式吗?

6 个答案:

答案 0 :(得分:3)

imho不能使用save方法来验证对象。它在调用Save时应该有效。因此,如果没有正确指定对象,则抛出异常是可以的。

至于验证,.NET中内置了一个名为DataAnnotations的框架。使用它可以在所有图层中更轻松地进行验证。

答案 1 :(得分:1)

您不应该返回字符串,但应该抛出异常。您可以创建特定的异常,如EmptyPropertyException,DateOutOfBoundException等,然后抛出它们。现在由客户端来捕获这些异常以显示正确的错误消息。使用异常更好,因为您可能希望在不同位置显示略有不同的错误消息,或者可能需要使用本地化字符串。

答案 2 :(得分:1)

企业库 - 验证块提供了非常好的实现。请在以下位置查看详细程度和易于实施:

http://msdn.microsoft.com/en-us/library/ff953192%28v=PandP.50%29.aspx

答案 3 :(得分:0)

它取决于您的需求和用户需求...
基本上你可以返回一个字符串:如果为null或为空,一切正常,相反,这个字符串就是错误。因此,您可以显示MessageBox或采取您喜欢的任何操作 通常我更喜欢不做任何服务器端(如果有错误)并返回错误本身,所以客户端我可以采取行动或让用户决定做什么。
如果出现错误,您甚至可以从服务器返回异常,如果一切正常,您甚至可以返回null。

答案 4 :(得分:0)

如果你想知道保存失败的原因,请使用他们所在的例外。

答案 5 :(得分:0)

我会使用类似结果状态的东西 - 一个具有布尔属性的对象,显示操作是否成功,如果发生某些错误则发生用户消息,以及发生异常。