【发布时间】:2014-10-27 15:18:30
【问题描述】:
我正在考虑设计一个业务规则引擎,它基本上从存储在数据库中的一组字符串值生成一个 EF 查询。
例如我将连接字符串、表名、where 条件谓词和选择谓词作为字符串字段存储在数据库中,并希望动态构造 EF 查询。例如
var db = new DbContext(“connectionstring”);
var wherePredicate = Expression.FromString(“p => p.StartDate > new DateTime(2014,5,1))
var selectPredicate = Expression.FromString(“p => p”)
var results = db.Set(“Projects”).Where(wherepredicate).Select(selectPredicate)
为了构建谓词,我可以使用 DynamicExpression 或 Dynamic LINQ 库。
但是,我如何访问 db.Set(“Projects”) 其中 Projects 是实体名称并应用 where 和 select 谓词? (或类似db[“Projects”].Where().Select)。
我尝试了DbContext.Set(Type entityttype) 方法的非泛型版本,但不知道如何将Where 和Select 谓词应用于返回的对象。
我试图避免生成 SQL 查询,而是依赖于动态生成的 EF 代码。
【问题讨论】:
-
似乎您将失去实体框架的所有好处。
标签: entity-framework