Expression Trees作为用户定义查询引擎的基础(使用EAV)?

时间:2010-09-21 14:23:52

标签: c# linq expression-trees

我支持多租户系统,允许用户定义自定义表单。数据模型基于EAV,因为在单个数据库中支持多个租户时,发布动态DDL以更改表模式不起作用。即将到来的要求是构建一个灵活的查询设计器,允许用户根据他们定义的自定义表单设置简单谓词:

  1. 自定义日期字段< DateTime.Today

  2. 自定义数字Field1> 1000和< 1500

  3. 自定义数字Field2为空
  4. 我原本打算通过动态假脱机SQL字符串来构建这个查询引擎,但我想知道Expression Trees是否提供了一种更可测试且类型安全的方法。这是ET的良好应用吗?

2 个答案:

答案 0 :(得分:1)

是的,利用表达式树将是一种更好/更简单的方法来处理动态用户定义的查询。这个简单的类可以极大地帮助构建动态查询:

PredicateBuilder

答案 1 :(得分:1)

请务必查看Dynamic LINQ Query Library作为其他选项。它很受欢迎且功能强大。