给DataRow添加字段级验证是指在插入或更新时检查业务对象所涉及到的所有属性值。拿产品来举个例,某些字段级的验证规则如下所示:
专注于为中小企业提供成都网站制作、成都网站建设、外贸营销网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业太和免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
· ProductName字段不得超过40个字符
· QuantityPerUnit字段不得超过20个字符
· ProductID、ProductName以及Discontinued字段是必填的,而其他字段则是可填可不填的
· UnitPrice、UnitsInStock、UnitsOnOrder以及ReorderLevel字段不得小于0
这些规则可以或者说是应该在数据库层被描述出来。ProductName和QuantityPerUnit字段上的字符数限制可以通过Products表中相应列的数据类型来实现(分别为nvarchar(40) and nvarchar(20))。字段“是否必填”可以通过将数据库中表的相应列设置为“允许为NULL”来实现。为了保证UnitPrice、UnitsInStock、UnitsOnOrder以及ReorderLevel字段的值不小于0,可以分别在它们的相应列上加一个约束。
除了在数据库中应用了这些规则之外,它们同时也将被其应用在DataSet上。事实上,字段长度和是否允许为空等信息已经被应用到了各DataTable的DataColumn集合中。我们可以在数据集设计器(DataSet Designer)中看到已经存在的字段级验证,从某个DataTable中选择一个字段,然后在属性窗口中就可以找到了。如图四所示,ProductDataTable中的QuantityPerUnit字段允许空值并且***长度为20各字符。如果我们试图给某个ProductsDataRow的QuantityPerUnit属性设置一个长度大于20个字符的字符串,将会有一个ArgumentException被抛出。
图四:DataColumn提供了基本的字段级验证
不幸的是,我们不能通过属性窗口指定一个边界检查,比如UnitPrice的值不能小于0。为了提供这样的字段级验证,我们需要为DataTable的ColumnChanging事件建立一个Event Handler。正如上一节教程中所提到的那样,由类型化数据集创建的DataSet、DataTable还有DataRow对象可以通过partial类来进行扩展。使用这个技术,我们可以为ProductDataTable创建一个ColumnChanging的Event Handler。我们先在App_Code文件夹中新建一个名为ProductsDataTable.ColumnChanging.cs的类文件,如下图所示。
图五:在App_Code文件夹中添加新类
然后,给ColumnChanging事件创建一个Event handler,以保证UnitPrice、UnitsInStock、UnitsOnOrder以及ReorderLevel字段的值不小于0。如果这些列的值超出范围就抛出一个ArgumentException。
- public partial class Northwind
- {
- public partial class ProductsDataTable
- {
- public override void BeginInit()
- {
- this.ColumnChanging += ValidateColumn;
- }
- void ValidateColumn(object sender, DataColumnChangeEventArgs e)
- {
- if(e.Column.Equals(this.UnitPriceColumn))
- {
- if(!Convert.IsDBNull(e.ProposedValue) && (decimal)e.ProposedValue < 0)
- {
- throw new ArgumentException("UnitPrice cannot be less than zero", "UnitPrice");
- }
- }
- else if (e.Column.Equals(this.UnitsInStockColumn) ||
- e.Column.Equals(this.UnitsOnOrderColumn) ||
- e.Column.Equals(this.ReorderLevelColumn))
- {
- if (!Convert.IsDBNull(e.ProposedValue) && (short)e.ProposedValue < 0)
- {
- throw new ArgumentException(string.Format("{0} cannot be less than zero", e.Column.ColumnName), e.Column.ColumnName);
- }
- }
- }
- }
- }
这样就实现了asp.net 2.0数据操作中的业务逻辑层的第三步:给DataRow添加字段级验证。
【编辑推荐】
本文题目:ASP.NET 2.0数据教程:给DataRow添加字段级验证
网页路径:http://www.shufengxianlan.com/qtweb/news7/79307.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联