简而言之:我可以在实体模型中以某种方式使用文字 SQL 子查询而不使用数据库视图吗?
上下文:我有一堆导致 C# 对象的 ADO.NET 查询。这些对象直接对应于查询形状;即我可以ObjectContext.Translate
将它们从SqlDataReader
. 有很多这样的查询,很多相当复杂,其中一些使用实体框架不支持的功能(while 循环、CTE、hierarchyid 等)——将这些(遗留)查询转换为 LINQ 是不可行的。
但是,我真的希望能够包装这些结果并在 C# 方面添加一些自定义过滤:排序、过滤、分页等。我可以将每个查询转换为视图(或存储过程)和映射这些,但这是一个麻烦和维护的噩梦 - 但原则上 EF 可以通过该路线与“不透明”SQL 查询一起使用。
我可以以某种方式将用 SQL 编写的子查询与实体模型一起使用吗?ObjectContext.Translate
返回 anIQueryable
而不是 an的 AnIEnumerable
是理想的,但不是必需的:绝大多数查询都是编译时常量,因此可以进行某种形式的预处理。
编辑:我正在寻找返回的东西,IQueryable
所以我可以添加过滤器/排序客户端,但让它们在数据库上执行(像往常一样)。我首先使用实体框架代码。