直接上代码

    [Table("single_table")]
public class SingleTable
{
[Key]
public Int32 id { get; set; }
//refer http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations(v=vs.110).aspx
[Required]
[Url]
[EmailAddress]
[RegularExpression("pattern")]
[MaxLength(, ErrorMessage = "cant more than 1")]
[MinLength()]
[Range(, )]
[FileExtensions]
[DataType(DataType.CreditCard)] //还不熟
[myValidation(ErrorMessage = "xx")] //ErrorMessage是attribute对象公开属性
public string data { get; set; }
}

这些都是default微软提供的基本验证

在 SaveChanges()的时候会触发

也可以在通过entry验证

bool ok = db.Entry(data).GetValidationResult().IsValid;

string errorMsg = db.Entry(data).GetValidationResult().ValidationErrors.First().ErrorMessage;

ValidationErrors 是个集合,可能有多个错误。

上面有一个 myValidation 是我们自定义的,来看代码吧

    public class myValidation : ValidationAttribute
{
public myValidation()
{
//init
}
//Override ValidationResult
//object value 是当前的值,可以判断类型来进行不同验证.
//ValidationContext 里面可以获取当前被验证的entity对象,通过反射应该要拿什么都可以了吧.
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
this.ErrorMessage = ""; //这里可以动态拼写errorMsg
//成功
return ValidationResult.Success;
//失败就返回error msg
return new ValidationResult(this.ErrorMessageString);
}
}

看完注释就应该明白了吧.

还有就是如何捕获异常

    catch (DbEntityValidationException ex) //用这个class
{
//因为 SaveChanges 会同时验证多个实体
//所以这里可能会有很多哦
foreach (var eve in ex.EntityValidationErrors)
{
//eve可以用entry获取实体
string className = eve.Entry.Entity.GetType().Name; //eve内有实体
string state = eve.Entry.State.ToString(); //state added,modified 等 foreach (var ve in eve.ValidationErrors)
{
//每个属性和errorMsg
string attr = ve.PropertyName;
string errorMsg = ve.ErrorMessage;
}
}
throw null;
}

Entity Framework with MySQL 学习笔记一(验证标签)的更多相关文章

  1. Entity Framework with MySQL 学习笔记一(安装)

    声明 :  数据库是Mysql,本人的程度只到会写sql语句(不会储蓄过程), c# 会基本的ADO.NET数据库访问,LINQ基础. 这篇只做个人学习|温习作用. 新手可以参考,也请高手指正错误, ...

  2. Entity Framework with MySQL 学习笔记一(乐观并发)

    在做项目时,通常我们对乐观并发有几种处理模式 1. 告诉用户此数据已被其他人捷足先登,更改了.你就算新一下重来吧. 2.直接把数据覆盖上去,我最大. 3.用被人的数据. 这里给出 code first ...

  3. Entity Framework with MySQL 学习笔记一(继承)

    基本上sql中要表示继承关系有3中方式. 分别是,1表继承(TPH),2表继承(TPC),3表继承(TPT) 1表 : Person id type name classroom office 1 s ...

  4. Entity Framework with MySQL 学习笔记一(关系整理版)

    1-1 设置 //DataAnnotation 1-1 | 1-0 table //SQLtable : member , columns : memberId, name //SQL basic l ...

  5. Entity Framework with MySQL 学习笔记一(查看EF和SQL请求日志)

    做数据库的一向来都会很注意请求的次数还有语句.这关系到很多性能的问题. 因此在使用EF的时候如果不了解原理很可能会搞出很糟糕的请求. 所以呢,在还没有搞懂EF前最基本的是你得"看得见&quo ...

  6. Entity Framework with MySQL 学习笔记一(拦截)

    参考 : http://msdn.microsoft.com/en-us/data/dn469464.aspx EF 允许我们在发送SQL请求和返回数据时做一些拦截的动作 比如可以自定义写 log , ...

  7. Entity Framework with MySQL 学习笔记一(复杂类型 Complex Types)

    有时候我们希望在sql一个表里面的column, 一部分被分化成另一个class 典型的例子是 Address 直接看代码: [Table("member")] public cl ...

  8. Entity Framework with MySQL 学习笔记一(insert,update,delete)

    先说说 insert 吧. 当EF执行insert时,如果我们传入的对象是有关联(1对多等)的话,它会执行多个语句 insert到多个表, 并且再select出来填充我们的属性(因为有些column默 ...

  9. Entity Framework with MySQL 学习笔记一(关系)

    这一篇说说 EF Fluent API 和 DataAnnotations 参考 : http://msdn.microsoft.com/en-us/data/jj591617.aspx http:/ ...

随机推荐

  1. openstack theme topic

  2. E - Minimum Cost - POJ 2516(最小费)

    题目大意:N个客户,M个供货商,K种商品,现在知道每个客户对每种商品的需求量,也知道每个供货商每种商品的持有量,和供货商把一种商品运送到每个客户的单位花费.现在想知道如果能满足所有客户的最小花费是多少 ...

  3. 微信/易信公共平台开发(二):自定义菜单的PHP实现(提供源码)

    微信把公众号分成订阅号和服务号两种,服务号可以自定义菜单, 菜单大大方便了用户操作. 比如:公众服务号 "中国南方航空" 的自定义菜单如下图: 点菜单就可以直接进入操作了,方便! ...

  4. HDU 2896 AC自动机 裸题

    中文题题意不再赘述 注意字符范围是可见字符,从32开始到95 char c - 32 #include <stdio.h> #include <string.h> #inclu ...

  5. adb 获取手机值

     获取手机RAM值    adb shell cat /proc/meminfo   获取手机内存值     adb shell df /data

  6. 索引时利用K-邻近算法过滤重复歌曲

    最近一直在做公司搜索的优化与维护,做完索引和搜索的分离之后,又有一个新需求,因为做的是歌曲方面的搜索,所以在数据库中有多个同歌名,同演唱者的的数据,这样在用户搜索的时候,会出来一大堆不同版本的歌曲,影 ...

  7. Android - ContentProvider机制

    以下资料摘录整理自老罗的Android之旅博客,是对老罗的博客关于Android底层原理的一个抽象的知识概括总结(如有错误欢迎指出)(侵删):http://blog.csdn.net/luosheng ...

  8. ASP.NET-FineUI开发实践-1

    用.Net开发3年,主要接触资产管理,生产流程,质量追溯,.Net在这方面还是很靠谱的.2月低接触FineUI,那时版本是3.0+,第一眼让我想起了ExtJs,其实就是用.Net封装了ExtJs让AS ...

  9. 前端CSS兼容的一些思路

    半夜睡不着觉,起来写第一博. 近段时间,公司要给一个网站产品增加一个换色功能,安排我负责该事项. 之前参与过一些定制项目,是基于该产品的二次开发,说实话里面的前端结构很混乱.所以第一步就是将html前 ...

  10. SpringMVC简单例子

    http://www.cnblogs.com/wawlian/archive/2012/11/17/2775435.html