ALinq 使用教程(四)验证实体类

本文介绍如何使用ValidateAttribute对.NET实体类的属性进行验证,并提供了一个具体的示例。通过在属性上添加验证特性并实现自定义的验证方法,可以在提交更改前确保数据的有效性。

添加 Validate Attribute 到属性

选取 Product 类中的 PropertyName 属性,在属性窗口中,选择 Attributes 项,然后点击旁边的按钮。在弹出的对话框中,双击左边 Attribute List 中的 RequiredAttribute 项,将其添加到右边。在属性窗口中,将 AllowEmptyString 设为 False ,点击 OK 按钮保存。

2010120310450511.jpg

2010120310484154.jpg

  

实现扩展方法

在设计器中,鼠标右键点击 Product 类,在弹出的菜单中,选择 ViewCode (或者按 F7 快捷键)。

导入命名空间

using System;
using System.ComponentModel.DataAnnotations;
using System.Linq;

在 Prodcut 类中,添加下面的方法用于对实体类的属性进行验证。

 

ContractedBlock.gif ExpandedBlockStart.gif 代码
partial void OnValidate(ALinq.ChangeAction action)
{
var propertyInfos
= this .GetType().GetProperties();
foreach (var propertyInfo in propertyInfos)
{
var customeAttributes
= propertyInfo.GetCustomAttributes( true )
.Where(o
=> o is ValidationAttribute)
.Cast
< ValidationAttribute > ();

foreach (var attribute in customeAttributes)
{
attribute.Validate(propertyInfo.GetValue(
this , null ), propertyInfo.Name);
}
}
}

在 Program.cs 文件中,添加下面的代码:

ContractedBlock.gif ExpandedBlockStart.gif 代码
static void Main( string [] args)
{
var dc
= new NorthwindDataContext()
{
Log
= Console.Out
};

var product
= new Product { Productname = "" };
dc.Products.InsertOnSubmit(product);
dc.SubmitChanges();
}

按 Ctrl + F5 运行,从图中可以发现,抛出了一个异常,那是因为 ProductName 属性验证失败了。

2010120311180611.jpg

关于更多验证方面的内容,请参考:

http://msdn.microsoft.com/en-us/library/cc488527.aspx

http://weblogs.asp.net/scottgu/archive/2007/07/11/linq-to-sql-part-4-updating-our-database.aspx

或者 Google : Linq to SQL validate

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值