小编Meh*_*iny的帖子

通过反射从某些给定字符串创建强类型LINQ查询的最佳方法是什么

我正在使用EF5,工作单元和存储库模式.我想为访问指定用户的数据定义一些限制.在数据库中,我设计了一个表来保存我的实体名称及其属性(称为EntityProperties),另一个表来保存这些属性的值,这些属性称为PropertyValues,每个EntityProperty都有一个或多个PropertyValues.在用户请求数据的业务层中,如果为他定义了任何限制,则应在linq语句中添加一些条件.我所做的是通过'userId'获取实体名称及其属性和值的列表,然后我在linq查询中添加一些'Where'子句.但是,实体名称及其属性的类型为"String",因此我应该使用Reflection来管理它们.但我不知道这一部分,我不知道 知道如何从给定的条件字符串集创建LINQ where子句.例如,假设用户请求列表顺序,用户ID为5.我首先查询这些访问限制表,结果是:

"订单","Id","74"

"秩序","Id","77"

"订单","Id","115"

这意味着该用户只能看到这三个订单,而在Orders表中,我们有更多的订单.所以,如果我想使用LINQ查询来获取订单,例如:

var orders = from order in Context.Orders
Run Code Online (Sandbox Code Playgroud)

我需要把它变成这样的东西:

var orders = from order in Context.Orders
Run Code Online (Sandbox Code Playgroud)

//其中订单ID应为74,77,115

但是,从"Order"和"Id"字符串到Order实体和Id属性需要反射.因此有两个问题:

从字符串中获取强类型的最佳方法是什么?我有更好的方法来做到这一点,表现更好吗?

c# linq reflection design-patterns entity-framework-5

8
推荐指数
1
解决办法
1234
查看次数