Entity Framework with MySQL 学习笔记一(验证标签)
直接上代码
[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 学习笔记一(验证标签)的更多相关文章
- Entity Framework with MySQL 学习笔记一(安装)
声明 : 数据库是Mysql,本人的程度只到会写sql语句(不会储蓄过程), c# 会基本的ADO.NET数据库访问,LINQ基础. 这篇只做个人学习|温习作用. 新手可以参考,也请高手指正错误, ...
- Entity Framework with MySQL 学习笔记一(乐观并发)
在做项目时,通常我们对乐观并发有几种处理模式 1. 告诉用户此数据已被其他人捷足先登,更改了.你就算新一下重来吧. 2.直接把数据覆盖上去,我最大. 3.用被人的数据. 这里给出 code first ...
- Entity Framework with MySQL 学习笔记一(继承)
基本上sql中要表示继承关系有3中方式. 分别是,1表继承(TPH),2表继承(TPC),3表继承(TPT) 1表 : Person id type name classroom office 1 s ...
- Entity Framework with MySQL 学习笔记一(关系整理版)
1-1 设置 //DataAnnotation 1-1 | 1-0 table //SQLtable : member , columns : memberId, name //SQL basic l ...
- Entity Framework with MySQL 学习笔记一(查看EF和SQL请求日志)
做数据库的一向来都会很注意请求的次数还有语句.这关系到很多性能的问题. 因此在使用EF的时候如果不了解原理很可能会搞出很糟糕的请求. 所以呢,在还没有搞懂EF前最基本的是你得"看得见&quo ...
- Entity Framework with MySQL 学习笔记一(拦截)
参考 : http://msdn.microsoft.com/en-us/data/dn469464.aspx EF 允许我们在发送SQL请求和返回数据时做一些拦截的动作 比如可以自定义写 log , ...
- Entity Framework with MySQL 学习笔记一(复杂类型 Complex Types)
有时候我们希望在sql一个表里面的column, 一部分被分化成另一个class 典型的例子是 Address 直接看代码: [Table("member")] public cl ...
- Entity Framework with MySQL 学习笔记一(insert,update,delete)
先说说 insert 吧. 当EF执行insert时,如果我们传入的对象是有关联(1对多等)的话,它会执行多个语句 insert到多个表, 并且再select出来填充我们的属性(因为有些column默 ...
- Entity Framework with MySQL 学习笔记一(关系)
这一篇说说 EF Fluent API 和 DataAnnotations 参考 : http://msdn.microsoft.com/en-us/data/jj591617.aspx http:/ ...
随机推荐
- dojox.grid.EnhancedGrid 和 dojox.grid.DataGrid 的继承关系
dojox.grid.EnhancedGrid 的介绍说, EnhancedGrid 是基于 DataGrid 提供增强功能的. EnhancedGrid (dojox.grid.EnhancedG ...
- G - Balanced Lineup - poj3264(区间查询)
题意:给你一组值,然后询问某个区间的最大值和最小值得差 分析:因为没有更新,所以只需要查找即可,节点保存一个最大值最小值就行了 ************************************ ...
- java中输入方式Scanner和BufferedReader
Scanner 在java.util包中,需要引入时可以用import java.util.*;或者import java.util.Scanner; 工作原理:通过new创建一个Scanner对象, ...
- web service1简单的例子用jdk自带的类
1,建立自己的java项目my_service 2,建立包,com.hjg.service 3,创建类: IMyService.java package com.hjg.service; import ...
- Reachability下载地址
https://developer.apple.com/library/ios/samplecode/Reachability/Introduction/Intro.html
- Apache Shiro 使用手冊 链接文件夹整理
1.Apache Shiro 使用手冊(一)Shiro架构介绍 2.Apache Shiro 使用手冊(二)Shiro 认证 3.Apache Shiro 使用手冊(三)Shiro 授权 4.Apac ...
- js上拉加载、下拉刷新的插件
之前在网上找那种下拉刷新,上拉加载的插件,有一款IScroll,但是用起来太麻烦,于是就自己写了款,但依赖于jquery.js,bug肯定有,希望评论提出. js: /* 简洁的下拉刷新,上拉加载插件 ...
- machine learning in action , part 1
We should think in below four questions: the decription of machine learning key tasks in machine lea ...
- LA 6448 Credit Card Payment
[题目] 你的信用卡目前欠M元,每月的汇率是R,每月的利息要四舍五入为小数点后两位,你每月还B元,问多少月能还清. 输入 先是T代表测试数据组数 接下来T行,每行有三个实数,R,M,B每个实数小数 ...
- SQL存储过程+游标 循环批量()操作数据
本人收集的,挺有用的 1. 利用游标循环更新.删除MemberAccount表中的数据 DECLARE My_Cursor CURSOR --定义游标 FOR (SELECT * FROM dbo.M ...