DevExpress XPO笔记5:数据验证
在实现数据添加或更新的时候,我们通常需要对新的数据进行验证,以保证数据的正确性,接下就来讲讲如何自定义验证。
- 字符串空值验证
- 整数验证
XPO中的数据交互,都是通过持久化对象来完成的,所以我们如果要对数据进行验证,就需要在持久化类中,做相应的判断。
首先我们需要构建异常抛出类,它继承自Exception类。用于数据验证不通过时抛出异常信息,然后通过调用基类的构造函数,组合要抛出的异常信息。
构造函数的参数为:当前更新的持久化对象和属性名称。
这里我们构建了两个异常类,分别验证字符串空值异常类与整数异常类。
/// <summary>
/// 字符串空值验证类
/// </summary>
public class RequiredPropertyValueMissing : Exception
{
public RequiredPropertyValueMissing(XPObject theObject, string propertyName):
base(string.Format("The {0} property of the {1} object with id {2} must have a value",
propertyName, theObject.GetType().Name, theObject.Oid))
{
}
}
/// <summary>
/// 整数验证类
/// </summary>
public class RequiredPropertyValueDigit : Exception
{
public RequiredPropertyValueDigit(XPObject theObject, string propertyName) :
base(string.Format("The {0} property of the {1} object with id {2} must have a Digit",
propertyName, theObject.GetType().Name, theObject.Oid))
{
}
}
然后我们需要在持久化类中判断属性的值,这里可以重写OnSaving(),此方法可以在数据保存的过程中被执行。
方法中可以利用C#自带的验证方法,或者利用正则表达式来验证,当在不满足验证条件时,我们实例化刚才的验证类,抛出异常信息。
这样就实现了XPO的数据自定义验证功能,而不需要将数据保存到数据库时,由数据库抛出异常了。