Подтвердить что ты не робот

Указание имени коллекции в RavenDB

Так что скажем, у меня есть 3 объекта Fruit, Apple и Orange. Фрукты - это абстрактный базовый класс для Apple и Orange. Когда я использую session.Store(myApple), он помещает его в коллекцию яблок. магазины myOrange в коллекции Oranges. Имеет смысл.

Могу я сказать Ворону, что я хочу, чтобы коллекция Фруктов могла содержать Яблоки или Апельсины? Mongodb позволяет это, поскольку он позволяет мне явно указать имя коллекции. В документации к коллекциям RavenDB говорится:

Ожидаемый шаблон использования состоит в том, что коллекции используются для группировки документы с аналогичной структурой, хотя это не требуется. Из точка базы данных, коллекция - это всего лишь группа документов которые имеют одно и то же имя.

Я ожидаю, что это будет выглядеть как: session.Store <Fruit> (myApple) или session.Store( "Fruits", myApple)

Любые идеи? Спасибо.

4b9b3361

Ответ 1

Шило, Вы можете сделать это, используя:

session.Store(apple);
session.Advanced.GetMetadataFor(apple)[Constants.RavenEntityName] = "Fruits";

Это долгий путь. Лучше всего было бы добавить эту логику глобально, она выглядит примерно так:

store.Conventions.FindTypeTagName = 
   type => type.IsSubclassOf(typeof(Fruit)) ? 
       DocumentConvention.DefaultTypeTagName(typeof(Fruit)) : 
       DocumentConvention.DefaultTypeTagName(type);

Это будет для всего этого.