Указание имени коллекции в RavenDB
Так что скажем, у меня есть 3 объекта Fruit, Apple и Orange. Фрукты - это абстрактный базовый класс для Apple и Orange. Когда я использую session.Store(myApple), он помещает его в коллекцию яблок. магазины myOrange в коллекции Oranges. Имеет смысл.
Могу я сказать Ворону, что я хочу, чтобы коллекция Фруктов могла содержать Яблоки или Апельсины? Mongodb позволяет это, поскольку он позволяет мне явно указать имя коллекции. В документации к коллекциям RavenDB говорится:
Ожидаемый шаблон использования состоит в том, что коллекции используются для группировки документы с аналогичной структурой, хотя это не требуется. Из точка базы данных, коллекция - это всего лишь группа документов которые имеют одно и то же имя.
Я ожидаю, что это будет выглядеть как: session.Store <Fruit> (myApple) или session.Store( "Fruits", myApple)
Любые идеи? Спасибо.
Ответы
Ответ 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);
Это будет для всего этого.