在编写实体框架 的提供程序时,必须将实体框架 命令目录树转换为特定数据库可理解的 SQL,如 Transact-SQL for SQL Server 或 PL/SQL for Oracle。 在本节中,您将了解如何针对实体框架 提供程序开发 SQL 生成组件(用于 SELECT 查询)。 有关插入、更新和删除查询的信息,请参见修改 SQL 生成。
若要理解本节内容,您应熟悉实体框架 和 ADO.NET 提供程序模型。 您还应理解命令目录树和 DbExpression。
SQL 生成模块的角色
实体框架 提供程序的 SQL 生成模块可将给定的查询命令目录树转换为面向符合 SQL:1999 的数据库的单个 SQL SELECT 语句。 生成的 SQL 应具有尽可能少的嵌套查询。 SQL 生成模块不应简化输出查询命令目录树。 实体框架 将执行此操作,例如,它将通过消除联接并折叠连续的筛选器节点来做到这一点。
DBProviderServices 类是用来访问 SQL 生成层以将命令目录树转换为 DbCommands 的开始点。