LightSwitch 2011 数据字段唯一性验证方案

LightSwitch 2011 数据字段唯一性验证方案

 


 

验证单表数据的某个字段不能输入重复值

 

设置实体字段唯一索引

如果不写代码,那么验证只会在用户提交[保存]数据后,会提示错误,很明显这样的用户体验并不好,因此还需要做以下步骤

添加自定义验证

 View Code

 
partial  void UserName_Validate(EntityValidationResultsBuilder results)
        {
             //  results.AddPropertyError("<错误消息>");
             bool duplicateExists =  false;
           
             switch ( this.Details.EntityState)
            {
                 case EntityState.Added:
                    {
                         // 基于页面未提交数据的验证
                        duplicateExists = (from item  in DataWorkspace.ApplicationData.Details.GetChanges().AddedEntities.OfType<Employee>()
                                            where item.UserName ==  this.UserName && ! string.IsNullOrEmpty( this.UserName)
                                           select item).Count() >  1 ?  true :  false;
                         // 基于数据库的验证
                         if (!duplicateExists)
                        duplicateExists = (from Employee emp  in DataWorkspace.ApplicationData.Employees.Cast<Employee>()
                                            where  this.UserName !=  null &&
                                            string.Compare(emp.UserName,  this.UserName.Trim(), StringComparison.InvariantCultureIgnoreCase) ==  0
                                           select emp).Any();
                         break;
                    }

                 case EntityState.Modified:
                    {
                        duplicateExists = (from item  in DataWorkspace.ApplicationData.Details.GetChanges().ModifiedEntities.OfType<Employee>()
                                            where item.UserName ==  this.UserName && ! string.IsNullOrEmpty( this.UserName)
                                           select item).Count() >  1 ?  true :  false;
                         if (!duplicateExists)
                        duplicateExists = (from Employee emp  in DataWorkspace.ApplicationData.Employees.Cast<Employee>()
                                            where  this.UserName !=  null &&
                                            string.Compare(emp.UserName,  this.UserName.Trim(), StringComparison.InvariantCultureIgnoreCase) ==  0
                                           select emp).Any();
                         break;
                    }
            }

             if (duplicateExists)
            {
                results.AddPropertyError( string.Format( " 该用户[{0}]已经存在。 ", UserName));

            }

运行结果如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值