Entity Framework with MySQL 学习笔记一(拦截)
参考 : http://msdn.microsoft.com/en-us/data/dn469464.aspx
EF 允许我们在发送SQL请求和返回数据时做一些拦截的动作
比如可以自定义写 log ,修改command , 修改result 等等
这里只是给一个简单的例子,以后有用到才研究吧.
public class EFInterceptorForSetTimeZone : IDbCommandInterceptor
{
public void NonQueryExecuting(DbCommand command, DbCommandInterceptionContext<int> interceptionContext)
{ }
public void NonQueryExecuted( DbCommand command, DbCommandInterceptionContext<int> interceptionContext)
{ }
public void ReaderExecuting( DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext)
{
command.CommandText = "set time_zone = '-8:00';" + command.CommandText;
}
public void ReaderExecuted(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext)
{
//use table to load result then modify then convert back to reader
var dataTable = new DataTable();
dataTable.Load(interceptionContext.Result);
dataTable.Rows[]["id"] = ;
interceptionContext.Result = dataTable.CreateDataReader();
} public void ScalarExecuting( DbCommand command, DbCommandInterceptionContext<object> interceptionContext)
{ }
public void ScalarExecuted(DbCommand command, DbCommandInterceptionContext<object> interceptionContext)
{ }
private void LogIfNonAsync<TResult>(DbCommand command, DbCommandInterceptionContext<TResult> interceptionContext)
{ }
private void LogIfError<TResult>(DbCommand command, DbCommandInterceptionContext<TResult> interceptionContext)
{ }
}
protected void Page_Load(object sender, EventArgs e)
{
try
{
using (DB db = new DB())
{
DbInterception.Add(new EFInterceptorForSetTimeZone()); //添加一个拦截器 //拦截for写log, 放一个委托函数就可以了,
//msg 就是entity pass 进来的 string
//function (msg) { do something with no return.. };
db.Database.Log = msg =>
{
string y = msg;
};
var xyz = db.admins.ToList();
}
}
catch (Exception ex)
{
string x = ex.Message;
}
}
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 学习笔记一(查看EF和SQL请求日志)
做数据库的一向来都会很注意请求的次数还有语句.这关系到很多性能的问题. 因此在使用EF的时候如果不了解原理很可能会搞出很糟糕的请求. 所以呢,在还没有搞懂EF前最基本的是你得"看得见&quo ...
- Entity Framework with MySQL 学习笔记一(验证标签)
直接上代码 [Table("single_table")] public class SingleTable { [Key] public Int32 id { get; set; ...
- Entity Framework with MySQL 学习笔记一(复杂类型 Complex Types)
有时候我们希望在sql一个表里面的column, 一部分被分化成另一个class 典型的例子是 Address 直接看代码: [Table("member")] public cl ...
- 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 学习笔记一(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:/ ...
随机推荐
- Objective-C中变量采用@property的各个属性值的含义
我们在OC中定义变量,可以自己来定义变量的setter方法来设置变量值,用getter方法来获取变量值.但是当变量数量增多时,还采用手动添加setter/getter方法来操作变量,就会使得程序代码量 ...
- Java并发编程:Future接口、FutureTask类
在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口. 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果. 如果需要获取执行结果,就 ...
- 数据库安全之TDE列加密
透明数据加密(Transparent Data Encryption) TDE - 基于列的加密 由于有了Oracle的TDE-基于列的加密,你所要做的只是定义需要加密的列,Oracle将为包含加密列 ...
- 遍历INI文件和删除指定域内容
主要还是使用的INI文件操作的API,只是把参数修改下. BOOL WINAPI WritePrivateProfileString( __in LPCTSTR lpAppName, __in LPC ...
- Java基础知识强化75:正则表达式之分割功能(字符串中的数字排序案例)
1. 案例分析: 我有如下一个字符串:"91 27 46 38 50" 写代码实现最终输出结果是:"27 38 46 50 91" 分析: (1)定义一个 ...
- Bzoj3990 [SDOI2015]排序
Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 651 Solved: 338 Description 小A有一个1-2^N的排列A[1..2^N], ...
- ASP.NET-FineUI开发实践-5
1.tree的右键事件和单击事件 页面就不写了,准备一个树和一个菜单控件,随便写点啥 JS:注意注释 var menuSettings = F('menuSettings'); var tree = ...
- JAVA彩色图片变灰处理
File file = new File("F:/firefox.png"); File destFile = new File("F:/pic/" + Sys ...
- YII框架路由和URL生成
路由和URL生成 当一个YII应用开始处理一个请求的时候,它首先要做的便是将请求的URL转化成一个路由.路由的作用是用于后续实例化相应的控制器和操作,以便处理请求,整个处理过程便叫做路由.路由的逆过程 ...
- W3C小组宣布:HTML5标准制定完成
近日,W3C小组宣布已经完成对HTML5标准以及Canvas 2D性能草案的制定,这就意味着开发人员将会有一个稳定的“计划和实施”目标. Web性能工作组已经推出W3C的两个版本建议草案. Navig ...