LinqProvider系列(三)如何实现自己的Linq Provider?
2015-06-30 16:33
267 查看
这篇文章将在前人的肩上,继续完成实现Linq Provider的任务。
首先,我们列出linq语法的解析过程:
linq本质上就是把我们惯用的语法糖,变成了一颗表达式树,然后由不同的linq Provider根据表达式树的内容,转化为自己所需要的数据结构,进而进行真正的数据查询。
实现自己的Linq Provider不是一件很难的事情,最关键的就是实现如下接口:
虽然是两个方法,但是是同一个意思,从表达式树中解析数据,然后完成自己的业务逻辑。
在观看了微软Linq Provider的例子之后(https://msdn.microsoft.com/zh-cn/library/vstudio/bb546158(v=vs.110).aspx)
我只能说解析Linq Expression 真是件又苦又累的差事。
怎么破?
首先,我们列出linq语法的解析过程:
linq本质上就是把我们惯用的语法糖,变成了一颗表达式树,然后由不同的linq Provider根据表达式树的内容,转化为自己所需要的数据结构,进而进行真正的数据查询。
实现自己的Linq Provider不是一件很难的事情,最关键的就是实现如下接口:
public TResult Execute<TResult>(System.Linq.Expressions.Expression expression) { throw new NotImplementedException(); } public object Execute(System.Linq.Expressions.Expression expression) { throw new NotImplementedException(); }
虽然是两个方法,但是是同一个意思,从表达式树中解析数据,然后完成自己的业务逻辑。
在观看了微软Linq Provider的例子之后(https://msdn.microsoft.com/zh-cn/library/vstudio/bb546158(v=vs.110).aspx)
我只能说解析Linq Expression 真是件又苦又累的差事。
怎么破?
相关文章推荐
- 计算ScrollView控件的滑动距离
- 数据库架构的演变
- 开博纪念
- php结合phpqrcode生成带图片LOGO的二维码
- iOS6中的Auto Layout:通过代码添加约束
- 面向对象 object 内部类
- C++ Primer Plus 第10章 对象和类
- SylixOS系统简介
- Checkbox can't checked
- 基础知识总结
- sql server删除主键约束所想到的
- C++算术运算符与算术表达式
- unity Toggle Groud
- Glog使用
- Android menu详解
- jquery操作select(取值,设置选中)
- Hadoop pipes
- 我为什么放弃Go语言
- bin和elf文件格式的区别
- Asterisk SIP账号设置