c# oop ravendb

c# - Especificando el nombre de la colección en RavenDB



ravendb vs mongodb (1)

Así que digamos que tengo 3 objetos Fruta, Manzana y Naranja. La fruta es la clase base abstracta para Apple y Orange. Cuando uso session.Store (myApple), lo coloca en la colección de Apple. Tiendas myOrange en la colección Oranges. Tiene sentido.

¿Puedo decirle a Raven que quiero una colección de frutas que pueda contener manzanas u naranjas? Mongodb lo permite, ya que me permite especificar explícitamente el nombre de la colección. La documentación de las colecciones de RavenDB dice:

El patrón de uso esperado es que las colecciones se utilizan para agrupar documentos con una estructura similar, aunque no es obligatorio. Desde el punto de vista de la base de datos, una colección es solo un grupo de documentos que comparten el mismo nombre de entidad.

Espero que sea algo como: session.Store <Fruit> (myApple), o session.Store ("Fruits", myApple)

¿Algunas ideas? Gracias.


Awl, puedes hacerlo usando:

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

Ese es el largo camino para hacerlo. Una forma mucho mejor sería agregar esta lógica globalmente, se ve algo como esto:

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

Eso manejará esto para todo.