Metadata “RavenDB更改元数据”;Raven实体名称“;

Metadata “RavenDB更改元数据”;Raven实体名称“;,metadata,ravendb,Metadata,Ravendb,我注意到,当我向RavenDB添加一个文档并看到“Raven实体名”元数据时,它使其成为复数形式。例如,如果我的型号名称是产品,它会将其更改为产品。为什么会有这样的行为 如果我已经创建了一个索引,我将被迫使用docs.Products这是RavenDB的哲学的一部分,即使用约定而不是配置,因此默认情况下它会这样做 但是如果你想覆盖它,你可以这样做: _documentStore = new DocumentStore { Url = "http://localhost:8080/" }; _do

我注意到,当我向RavenDB添加一个文档并看到“Raven实体名”元数据时,它使其成为复数形式。例如,如果我的型号名称是
产品
,它会将其更改为
产品
。为什么会有这样的行为


如果我已经创建了一个索引,我将被迫使用
docs.Products

这是RavenDB的哲学的一部分,即使用约定而不是配置,因此默认情况下它会这样做

但是如果你想覆盖它,你可以这样做:

_documentStore = new DocumentStore { Url = "http://localhost:8080/" };
_documentStore.Conventions.FindTypeTagName = t =>
{
    if (t.Name == "MyClass")
        return "MyClassBlahBlah";
    else
        return Raven.Client.Util.Inflector.Pluralize(t.Name); 
};

_documentStore.Initialize(); 

有关更多信息,请参见RavenDB讨论组上的

,这意味着对于每种型号,我都必须编写代码。有没有任何单点配置可以让它停止应用程序或ravendb本身的复数化?@ajay_whiz,Matt说了停止复数化所需的一切。Try:_documentStore.Conventions.FindTypeTagName=t=>t.Name;谢谢你!当您尝试在加载和更改非标准Id的文档后保存该文档时,该解决方案也会有所帮助。