gpt4 book ai didi

c# - RavenDb 检查索引是否存在

转载 作者:太空狗 更新时间:2023-10-29 18:12:16 25 4
gpt4 key购买 nike

如何检查索引是否存在? - 调用之前:

IndexCreation.CreateIndexes(typeof(MyIndexClass).Assembly, documentStore);

我看到的所有示例(包括示例项目中的示例)每次启动客户端时都会重新创建索引,这似乎不正确。

一般策略是什么?似乎有正常的 CRUD 操作,然后有管理命令,例如上面的索引命令。人们是否只是创建一个控制台应用程序来执行管理并与主应用程序分开部署/运行?

最佳答案

您不必检查是否存在。服务器将自动比较您发送的索引定义并检查它是否已经存在。如果存在具有相同名称和定义的一个,则将其单独保留。如果存在同名的,但定义已更改,则旧的将被删除并创建新的。

通常人们会在应用程序启动时在同一个应用程序中创建索引。对于可能位于 global.asax 中的 Web 应用程序,以及对于控制台/桌面应用程序,它只是启动代码的第一部分。

但有时这是不可能的,例如如果您有许多不同的数据库, Multi-Tenancy 应用程序通常会这样做。在这些情况下,您将在创建每个租户数据库时创建索引,并且在推出版本升级时可能需要更新或创建更多索引。

另外,我应该提一下,您可以通过几种不同的方式创建索引。

// scans the assembly for all indexes and creates them
IndexCreation.CreateIndexes(assembly, documentStore);

// scans a MEF catalog for all indexes and creates them
IndexCreation.CreateIndexes(catalog, documentStore);

// puts a single index the HARD way
documentStore.DatabaseCommands.PutIndex(...);

// puts a single index the easy way
documentStore.ExecuteIndex(new YourIndexCreationTask());

还有其他一些,但您明白了。

为了彻底,如果您真的确实想要检查索引是否存在,您可以使用:

documentStore.DatabaseCommands.GetIndex("YourIndex") != null

但这只会按名称检查,而不是按定义检查。而且您不需要它。

关于c# - RavenDb 检查索引是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13849542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com