2010-10-27 69 views
6

我有一个功能请求,可以稍后保存用户的搜索。保存LINQ查询以备后用的最简单方法是什么?

上飞现在我建立LINQ语句根据用户指定的内容。

于是我开始想,是对我有一个简单的方法来简单地执行用户构建的查询,并坚持它的地方,最好是我的数据库,这样我可以在以后检索它?

是否有持续查询XML或JSON也许,再后来重建查询的一些方法?

回答

3

以前从未做过这个,不过我有这样的想法:

,而不是直接具有针对你的数据库运行查询,如果你有它运行针对OData终点,你可以想见,提取网址作为查询字符串生成,并保存该URL供以后使用。由于OData已经有了一个很好的规范,你可以从其他人的劳动中获益。

+0

这不是一个坏主意。那么我需要在我的服务器上构建一个OData端点,并在我的网站上使用它来保存查询?这是这个想法吗? – Joseph 2010-10-27 19:00:14

+0

是的,这是主意。整洁的事情是,终端将按照您希望的那样公开,您可以将其限制为只包含模型的一个子集。就像我们可以通过LinqPad连接到StackOverflow来发现有趣的指标一样,您可以使某些客户或业务分析师对您的数据具有灵活的可查询视图。此外,通过创建额外层,即使您的基础模型发生更改,您也可以确保OData端点的模型保持不变。 – StriplingWarrior 2010-10-27 19:18:04

0

看一看Expression类。这将允许您预编译查询。虽然坚持这一点以供以后用于数据库以获得更好的性能是值得怀疑的。

+0

像System.Data.Linq.CompiledQuery还是你指的是什么东西? – Joseph 2010-10-27 18:47:27

3

我会与特定的域对象去这里即使这样好吃的东西确实存在 - 当你保存LINQ查询序列化和你的潜在模式的转变,无效每个人的保存的查询会发生什么。使用你自己的数据格式应该在一定程度上保护你。

+0

我并不真的担心我的潜在模式发生变化。我并不是说这不是一个有效的担忧,但在我的情况下,我不必担心我的模型会改变。 – Joseph 2010-10-27 20:36:11

+0

不是在谈论你的模型,而是用于序列化查询的(可能不存在的)工具。我敢打赌,随着框架的发展,内部生活将会发生什么变化。 – 2010-10-27 20:49:27

0

我写这篇文章,因为我在PDC10看this presentation。在1小时之后,他展示了他如何为表达式树构建JSON序列化程序。你可能会觉得很有趣。

相关问题