轻量级ORM框架(五):生成表达式树
当我们知道了Linq查询要用到的数据库信息之后。接下就是生成对应的表达式树。在前面的章节里面笔者就已经介绍过。生成表达式树是事实离不开IQueryable<T>接口。而处理表达式树离不开IQueryProvider接口。LinqToDB框架跟这俩个接口有关系的有三个类:Table<T>类、ExpressionQuery<T>类、ExpressionQueryImpl<T>类。其中最重要的是ExpressionQuery<T>类。他是Table<T>和ExpressionQueryImpl<T>类的父类。而本章就是围绕这三个类进行的。 IQueryable<T>接口和IQuery...
轻量级ORM框架(四):DataContext类
LinqToDB框架是一个轻量级的ORM框架。当然,功能上来讲一定比不上Entity Framework的强大。但是在使用上总让笔者感觉有一点Entity Framework的影子。笔者想过可能的原因有俩点:一是DataContext类的作用跟DbContext的作用很接近;二是都实现Linq查询的功能。那么DataContext类到底在LinqToDB框架里面算什么呢?笔者把DataContext类理解为这个框架的上下文——用于驱动整个LinqToDB框架。所以本章也是为DataContext类而来。 框架配置 从源码里面我们可以看到DataContext类有三个构造函数。笔者也是根据这三个构造函...
轻量级ORM框架(三):LinqToDB设计原理
我们知道实现了IQueryable<T>接口和IQueryProvider接口就可以使用Linq To SQL的功能。关于如何去实现的话,上一章也为我们引导了一个方向。LinqToDB框架也是顺着这个方向进行的。然而笔者对LinqToDB框架的作者真的很无语。如果有打开过LinqToDB框架源码的朋友,可能会发现很多代码都没有文字说明。这无疑给那些想要深入了解框架的人加大了前进力度。本来笔者以为只是没有相关代码说明不用怕。只要找到对应的文档应该没有什么大问题。于是笔者也跟很多人一样子——去作者的github上找。结果只有教大家如何使用...
轻量级ORM框架(二):LinqToDB查询
LinqToDB 源码分析——轻谈Linq查询 LinqToDB框架最大的优势应该是实现了对Linq的支持。如果少了这一个功能相信他在使用上的快感会少了一个层次。本来笔者想要直接讲解LinqToDB框架是如何实现对Linq的支持。写到一半的时候却发现本系列在内容上的引导显得格外的生硬。思考在三最后还是决定在讲解LinqToDB框架之前来一章过度文。 Linq查询的原理 我们在学习Linq的时候会见到一些很常见的关键词语。比如Linq To SQL、Linq To Objects、Linq To XML等。事实这些一般都是根据不同的数据源来进行命名的。 说实话笔者...
轻量级ORM框架(一):LinqToDB
笔者接触第二个ORM框架是LinqToDB。笔者不是想强调LinqToDB有多么好。笔者只是觉得他是一个相当不错的开源ORM框架。功能不比EF差,用法上很接近的EF,却比EF来得轻量,而且又多出了自己的特色。所以如果你用EF用得有一点烦了或是觉得EF有一点笨重。想去看看有没有别的ORM框架。不烦试试LinqToDB。 开发环境 对于LinqToDB的dll包在NuGet上可以下载到。只要输入“linq2db”即可。同时也可以在Github上面下载(https://github.com/linq2db/linq2db)。最好选择跟笔者一样子的版本,比较稳定。如下 软件开发工具:Visual ...
C#,.net获取字符串中指定字符串的个数、所在位置与替换字符串
2013年09月23日 09:22供稿中心: 课工场 摘要:public static int indexOf (字符串/字符,int从第几位开始,int共查几位)... 方法一: public static int indexOf (字符串/字符,int从第几位开始,int共查几位) string tests = "1absjjkcbfka2rsbcfak2bfka1"; //测试字符串 int i = tests.IndexOf("2b",5,tests.Length-5); //查找从第五字符向后查找“2b” textBox2.Text = i.ToString(); int i = tests.IndexOf("2b",5,2); //查找从第五字符向后查找两个字符是否有“2b” 返回-1 表示未找到“2b” LastI...
通过ILSpy反编译工具和ilasm修改.NET程序
金庸群侠传X中,田青文、木婉清、王语嫣的点穴游戏忒难过了,所以上网摸索了一下修改点穴游戏难度的办法。(本人已经测试适用于PC版1.1.0.2和iOS版的1.1.0.2,低版本的应该都适用) (由于无法上传图片,只能文字描述了,大家有问题可以留言) 我在IPAD上玩的,版本是1.1.0.2,将进度拷贝到同版本的PC版之后可以正常运行,于是我在PC版上修改,要修改的文件:金庸群侠传X_Data\Managed\Assembly-CSharp.dll(修改之前记得备份) 1:反编译工具ILSpy.exe:是个很不错的反编译软件,而且是免费了; 2:微软的工具il...
IEnumerable 和 IQueryable和区别和用法
共有两组 LINQ 标准查询运算符,一组在类型为 IEnumerable<T> 的对象上运行,另一组在类型为 IQueryable<T> 的对象上运行。构成每组运算符的方法分别是 Enumerable 和 Queryable 类的静态成员。这些方法被定义为作为方法运行目标的类型的“扩展方法”。这意味着可以使用静态方法语法或实例方法语法来调用它们。 大家应该还记得,上节我们说过linq查询要执行在clr上师把查询语句变成扩展方法来执行,这两套东西不仅返回类型不同连所定义的扩展方法都不同,所以我们完全可以把这2套东西理解成完全不同的东...
C#去掉回车等ASCCII码特殊字符
C#去掉回车等ASCCII码特殊字符 cellValue = cell.ToString().Trim().Replace(((char)10).ToString(), "").Replace(((char)13).ToString(), "").Replace(((char)32).ToString(), "");