【发布时间】:2010-10-27 18:34:28
【问题描述】:
我有一个功能请求,以便能够保存用户的搜索以供以后使用。
现在我正在根据用户指定的内容动态构建 LINQ 语句。
所以我开始想,有没有一种简单的方法可以让我简单地获取用户构建的查询,并将其保存在某个地方,最好是我的数据库,以便我以后可以检索它?
是否有某种方法可以将查询保存为 XML 或 JSON,然后稍后重新构建查询?
【问题讨论】:
标签: linq
我有一个功能请求,以便能够保存用户的搜索以供以后使用。
现在我正在根据用户指定的内容动态构建 LINQ 语句。
所以我开始想,有没有一种简单的方法可以让我简单地获取用户构建的查询,并将其保存在某个地方,最好是我的数据库,以便我以后可以检索它?
是否有某种方法可以将查询保存为 XML 或 JSON,然后稍后重新构建查询?
【问题讨论】:
标签: linq
以前从未这样做过,但我有过这样的想法:
如果您要让查询针对OData 端点运行,而不是直接针对您的数据库运行查询,您可以想象将生成的 URL 提取为查询字符串,并保存该 URL 以供以后使用。由于 OData 已经有了完善的规范,您将能够从其他人的劳动中获利。
【讨论】:
我会在这里使用特定于域的对象,即使确实存在这样的好东西——当您在 LINQ 中保存序列化查询并且您的基础模型发生更改时会发生什么,从而使每个人保存的查询无效。使用您自己的数据格式应该可以在一定程度上保护您。
【讨论】:
看一下 Expression 类。这将允许您预编译查询。尽管将其持久化以供以后使用到数据库以获得更好的性能是值得怀疑的。
【讨论】:
我在 PDC10 观看 this presentation 时正在写这篇文章。 1 小时后,他展示了他如何为表达式树构建 JSON 序列化程序。你可能会觉得这很有趣。
【讨论】: