zoukankan      html  css  js  c++  java
  • 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));

                }

    运行结果如下

  • 相关阅读:
    stack的基本使用方式
    洛谷 P2356 弹珠游戏
    关于字符串数组的一些操作
    递归分解因数
    筛法求素数模板
    世界顶级精英们的人生哲学!(转)
    Oracle 中重新编译无效的存储过程, 或函数、触发器等对象(转)
    由于没有安装音量控制程序,WINDOWS无法在任务栏上显示音量控制(转)
    Maximo(转)
    oracle 中nvl和sql server中isnull功能一样的
  • 原文地址:https://www.cnblogs.com/neozhu/p/2217221.html
Copyright © 2011-2022 走看看