我要求某个功能能够保存用户以后的搜索。
现在我正在根据用户指定的内容动态构建LINQ语句。
所以我开始想知道,有一个简单的方法让我简单地接受用户构建的查询,并将其保存在某个地方,最好是我的数据库,以便我以后可以检索它吗?
是否有某种方法可以将查询持久化为XML或JSON,然后再重新构建查询?
答案 0 :(得分:3)
之前从未这样做过,但我有这个想法:
如果您要使用OData端点运行查询,而不是让查询直接针对您的数据库运行,您可以想象地提取生成为查询字符串的URL,并保存该URL以供日后使用使用。由于OData已经有了很好的规范,你可以从其他人的劳动中获利。
答案 1 :(得分:3)
即使存在这样的好东西,我也会使用特定于域的对象 - 当您在LINQ中保存序列化查询并且您的基础模型发生更改时会发生什么,使每个人保存的查询无效。使用您自己的数据格式可以在一定程度上保护您免受此影响。
答案 2 :(得分:0)
看一下Expression类。这将允许您预编译查询。虽然坚持将其用于以后用于DB以获得更好的性能是值得怀疑的。
答案 3 :(得分:0)
当我在PDC10观看this presentation时,我正在写这篇文章。在1小时后,他展示了他是如何为表达式树构建JSON序列化程序的。你可能会发现这很有趣。