我想听听关于我正在尝试实施的场景的一些反馈。我目前已经使用 NHibernate 的 Criteria API 实现了这个场景,并且想知道是否有任何类似的东西是为 Entity Framework 4.1 实现的。
我需要最终用户可以从 UI 中选择过滤条件,从而构建一个可以包含复杂 AND/OR 条件的查询。
例如:用户可以说:我想要学生(Zip Code = 92037 AND Gender = F) OR (ZipCode = 92101 and Gender = M)
或者
我希望学生有(State = CA OR State = FL) AND GPA = 4.0 AND GENDER = M
这些查询通常使用前端的树控件构建。
我目前正在使用 NHibernate 进行这项工作。NHibernate 中的 Criteria API 非常棒。但是,NHibernate 有一个主要错误,那就是它不允许在 1:many 表上进行多个连接。
因此,例如,如果我有一个包含 CATCODE(类别代码)和答案的表,NHibernate 目前不会让我使用 Criteria API 进行多次查询。
所以我不能例如做:WHERE CATCODE = A and Answer in (A,B,C) AND CATCODE = B and Answer in (V,H,Y)
。
由于这个限制,我一直在尝试从 NHibernate 移出到实体框架中。我不知道是否有一种使用 API 做这类事情的好方法。
谁能告诉我一个更好的解决方案来实现这种功能,如果有的话?
如果有办法解决这个问题,我很想听听 NHibernate 和 EF 专家的意见。