在实体框架 6 中,是否可以将动态生成的原始 SQL 与 IQueryable 混合,如下所示:
IQueryable<Tree> tree_query = context.Trees.Where(t=>t.Height> 2);
IEnumerable<int> tree_additional_filter = context.Database.SqlQuery<int>("SELECT Id FROM TREE_VIEW WHERE Width < 1");
IQueryable<Tree> final_query = from tree in tree_query
join filtering_tree in tree_additional_filter on filtering_tree.id equals tree.id
select tree;
这会按原样产生结果,但在数据库中执行“tree_additional_filter”以构造 final_query。我怎样才能使实体框架只构造一个查询?
我需要它来创建与静态过滤器字段一起使用的动态过滤器字段。
我还尝试创建只有 Id 列的 TREE_VIEW 实体,我知道它总是在那里。使用 System.Linq.Dynamic 在只有 Id 属性的 TREE_VIEW 实体上动态构造“where”子句,但如果类型中不存在属性,显然无法构建表达式。