当前位置:  开发笔记 > 编程语言 > 正文

我应该在RavenDB上使用LINQ查询吗?

如何解决《我应该在RavenDB上使用LINQ查询吗?》经验,为你挑选了2个好方法。

我正在学习RavenDB而且我很困惑.据我所知,应该创建索引以获得真正有效的查询.但是,可以简单地进行LINQ查询,例如

using(IDocumentSession session = _store.OpenSession())
{
    MyDocument doc = session.Query()
                            .Where(d => d.Property == value)
                            .Single();
}

这种类型的查询工作得很好.但是,我从未为它创建过索引(当然,在进行查询时从不引用索引).

在使用RavenDB时,我应该使用这种查询吗?如果没有,为什么它甚至可以在API中使用?



1> Pure.Krome..:

这里有两件事要问你.

    我们可以使用索引..假设比动态查询更有效?

    如果我们使用索引..那么我们应该使用Linq和链接吗?

索引

正如Matt Warren所说,你没有在样本查询中使用任何索引.现在,通过示例查询,RavenDb足够聪明,可以创建临时(动态)索引.如果足够使用该动态索引,则会将其自动提升为静态/ perminent索引.

那么..你应该使用索引吗?如果可以,那么是的!

这是你的陈述,这次是定义了一个索引.

using(IDocumentSession session = _store.OpenSession())
{
    MyDocument doc = session.Query("ByProperty")
                            .Where(d => d.Property == value)
                            .Single();
}

在这种情况下MyDocument_ByProperty,在某处创建了一个名为的索引.我不打算解释索引的细节.. 去这里阅读所有关于它们的内容.

林克和链子

(不确定这是否是正确的术语......)

如果你用OR而不是索引创建一个linq语句(我在上面做过)..仍然会生成一个查询...然后将其转换为对RavenDB服务器的HTTP RESTful请求.如果你有一个索引..那么查询足够聪明,可以要求使用它.没有?然后服务器将创建一个动态索引..这意味着它还必须首先完成索引的动作,然后检索您的结果.

TL; DR;

是使用索引.是的,使用Linq链接.



2> Matteo Mosca..:

RavenDb支持.Net和Linq.

引擎盖下的Linq提供程序对ravendb服务器执行正常的REST调用,但是对于您来说,由于可以使用IQueryable强类型类,因此更容易对其进行编码.

所以,是的,您可以使用linq/lambda在.Net envorinment中使用RavenDB.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有