生成SQL语句的功能可以算是LinqToDB框架的最后一步。从上一章中我们可以知道处理完表达式树之后,相关生成SQL信息会被保存在一个叫SelectQuery类的实例。有了这个实例我们就可以生成对应的SQL语句。想要了解这一步部分的功能就必须从三个方面入手。一、Linq To SQL的机制原理。二、如何生成SQL语句。三、设置映射结果。
生成映射表达式
对于Linq To SQL的机制原理在前面的章节里面已经讲过了。这里笔者提出来主要目标是明确什么时候触发。下面的代码不是看前面的获得Query<T>类实列,而是看后面的GetIEnumerable方法调用。
ExpressionQuery<T>类:
IEnumerable<T> Execute(IDataContextInfo dataContextInfo, Expression expression)
{ return GetQuery(expression, true).GetIEnumerable(null, dataContextInfo, expression, Parameters);}记得笔者前面几个章节中讲到最后都会去调用俩个方法分别是Query<T>类中的GetIEnumerable方法和GetElement方法。而这俩个方法都是Func类型。如下
public Func<QueryContext, IDataContextInfo, Expression, object[], object> GetElement;public Func<QueryContext, IDataContextInfo, Expression, object[], IEnumerable<T>> GetIEnumerable;
显然很明显在调用GetIEnumerable方法一定要知道哪一个方法赋给他了。好了,先暂停一下。让我们去看一下上一章中笔者讲到Build<T>()方法有三个重要方法中的一个——BuildQuery()方法。
1 internal Query<T> Build<T>() 2 { 3 var sequence = BuildSequence(new BuildInfo((IBuildContext)null, Expression, new SelectQuery())); 4 5 &nbs


