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));

            }

运行结果如下

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏GreenLeaves

oracle 层次化查询(生成菜单树等)

1、简介:Oracle层次化查询是Oracle特有的功能实现,主要用于返回一个数据集,这个数据集存在树的关系(数据集中存在一个Pid记录着当前数据集某一条记录的...

2168
来自专栏坚毅的PHP

zookeeper学习系列:二、api实践

上一章我们知道zookeeper的简介,启动,设置节点以及结构性能。本小节我们来玩玩api,获取下数据。 php版本: http://anykoro.sinaa...

3834
来自专栏菩提树下的杨过

Replace方法与正则表达式的性能比较

今天做项目时遇到一个小需求:要将字符串中的回车符号替换成其它符号(比如"<br/>")。 考虑到不同的情况下,有些系统中是用\r\n作回车符,有些仅用\n就代表...

2059
来自专栏大内老A

通过一个模拟程序让你明白ASP.NET MVC是如何运行的

ASP.NET MVC的路由系统通过对HTTP请求的解析得到表示Controller、Action和其他相关的数据,并以此为依据激活Controller对象,调...

2876
来自专栏开发技术

flying-saucer + iText + Freemarker实现pdf的导出, 支持中文、css以及图片

      项目中有个需求,需要将合同内容导出成pdf。上网查阅到了 iText , iText 是一个生成PDF文档的开源Java库,能够动态的从XML或者数...

2731
来自专栏walterlv - 吕毅的博客

.NET 中 GetProcess 相关方法的性能

2018-08-19 07:04

793
来自专栏Golang语言社区

如果裸写一个goroutine pool

引言 在上文中,我说到golang的原生http server处理client的connection的时候,每个connection起一个goroutine,这...

4296
来自专栏大内老A

我的WCF之旅(4):WCF中的序列化[上篇]

SOA 和Message Windows Communication Foundation (WCF) 是基于面向服务架构(Service Orienta...

20610
来自专栏DOTNET

asp.net web api 下载之断点续传

一、基本思想 利用 HTTP 请求的Range标头值,来向服务端传递请求数据的开始位置和结束位置。服务端获得这两个参数后,将指定范围内的数据传递给客户端。当客户...

46812
来自专栏Java Web

JavaFX-TableView详解

前言 最近在着手一个学生管理系统的编写,涉及到TableView的使用,这前前后后的也有了些经验和想法想要记录和分享一下(事实上我正在想要用html网页代替界面...

3836

扫码关注云+社区