【发布时间】:2014-11-02 18:42:20
【问题描述】:
希望创建一种通用查询构建器,其中我通过导航属性拥有相关实体。所以我希望能够这样说:
var results = from entityA in context.entityAs
where entityA.NavigationPropertyB.PropertyZ = value1
group entityA by entityA.NavigationPropertyC.PropertyY into g
select new { propertyY = g.Key, value = g.OperatorD(x=>x.PropertyX)}
entityA、相关属性和操作符可以即时提供。我正在考虑获取给定实体类型的属性集合,并使用它们来构建动态查询的 lambda 表达式树。
a) 这行得通吗?合理吗?
b) 有没有一种简单的方法来获取我想要查询的所有属性的单个集合,包括相关实体上的属性 n 远离 entityA 的关系数?
c) 包含在运行时传入的相关实体的查询树是什么样的?
【问题讨论】:
-
我肯定会从 Dynamic Linq 开始。优点是已经实现了。查询作为字符串传递,因此您的动态 where 子句将是
.Where( "NavigationProperty.PropertyZ=\"value1\"" )。
标签: c# linq entity-framework lambda navigation-properties