5

I noticed that when I add a document to RavenDB and see the "Raven-Entity-Name" metadata it makes it plural. E.g. if my model name was Product it changes it to Products. Why such kind for behavior?

If I have create an index I am forced to use docs.Products

ajay_whiz
  • 17,573
  • 4
  • 36
  • 44

1 Answers1

12

It's part of the philosophy of RavenDB to do convention over configuration, so it does this by default.

But you can override it if you want to, you can do something like this:

_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(); 

See this thread on the RavenDB discussion group for more info

Matt Warren
  • 10,279
  • 7
  • 48
  • 63
  • so this means for every model i will have to write code. Is there any single point configuration whereby it stops pluralizing for the application or ravendb itself? – ajay_whiz Sep 04 '10 at 05:49
  • 3
    @ajay_whiz, Matt says everything you need to stop pluralizing. Try: _documentStore.Conventions.FindTypeTagName = t => t.Name; – Dmitry Schetnikovich Sep 28 '10 at 11:35
  • Thanks for this! Solution also helps when you're trying to save a doc with a non-standard Id after loading and changing it. – tom redfern May 19 '14 at 11:17