首先,我是 EF 和 LINQ 的菜鸟,甚至在较小程度上,一般来说 C#。对不起,如果我的问题措辞不当或只是愚蠢。
我一直在寻找这样的例子,但无济于事。我正在尝试创建一个“搜索框架”,它可以在我的模型中接受任何实体类型,并将为用户提供一个 UI 来进行自定义搜索。
虽然这里和其他地方有 10 个或 100 个与“动态 LINQ”或“动态查询”相关的问题,但似乎它们都有一个共同点,即实体类型在编译时是已知的。如果我们在编译时不知道怎么办?这意味着,框架将只接受来自开发人员的任何实体类型,然后从那里构建 LINQ 查询。
我需要做的是有那个上下文。在运行时提供客户,然后使用 PredicateBuilder 之类的东西构建“Where(s)”,很可能是 PredicateBuilder。
所以像:
var query = from c in context.Customers select c;
会更像:
var query = from c in AnyContext.AnyEntity select c;
我想我的问题是我可以使用什么对象在我的编译代码中保存参数 AnyContext 和 AnyEntity 以便它们可以在运行时替换为真实的上下文和实体?
我已经彻底查看了 PredicateBuilder 和 System.Linq.Dynamic 示例,但它们都在设计时定义了 EntityType。对我来说,这不是一个动态查询,只是一个动态谓词。