¿Es posible generar índices de tabla junto con el resto del esquema de base de datos con Fluidez NHibernate? Me gustaría poder generar la base de datos completa DDL a través de un proceso de compilación automatizado.Generar índices de tabla utilizando Fluiber NHibernate
Respuesta
En versiones más recientes de Fluido NHibernate, puede llamar al método Index()
hacer esto en lugar de utilizar SetAttribute
(que ya no existe):
Map(x => x.Prop1).Index("idx__Prop1");
¿Se refiere a los índices en las columnas?
Puede hacerlo manualmente en sus archivos ClassMap<...>
al agregar .SetAttribute("index", "nameOfMyIndex")
, p. Ej. de esta manera:
Map(c => c.FirstName).SetAttribute("index", "idx__firstname");
o puede hacerlo utilizando las funciones de atributo del Automapper - p. de este modo:
Después de haber creado su modelo de persistencia:
{
var model = new AutoPersistenceModel
{
(...)
}
model.Conventions.ForAttribute<IndexedAttribute>(ApplyIndex);
}
void ApplyIndex(IndexedAttribute attr, IProperty info)
{
info.SetAttribute("index", "idx__" + info.Property.Name");
}
y luego hacer esto a sus entidades:
[Indexed]
public virtual string FirstName { get; set; }
Me gusta este último. Es un buen compromiso entre no ser instrusivo con su modelo de dominio, y sin embargo ser muy efectivo y claro sobre lo que está sucediendo.
eso es exactamente lo que estaba buscando. Gracias. –
La respuesta de Mookid es excelente y me ayudó mucho, pero mientras tanto, la siempre cambiante API de Fluiber NHibernate ha cambiado.
Por lo tanto, la manera correcta de escribir muestra mookid ahora es la siguiente:
//...
model.ConventionDiscovery.Setup(s =>
{
s.Add<IndexedPropertyConvention>();
//other conventions to add...
});
donde IndexedPropertyConvention es la siguiente:
public class IndexedPropertyConvention : AttributePropertyConvention<IndexedAttribute>
{
protected override void Apply(IndexedAttribute attribute, IProperty target)
{
target.SetAttribute("index", "idx__" + target.Property.Name);
}
}
El [Indexado] atributo funciona de la misma manera ahora.
- 1. Generar base de datos con Nhibernate usando Fluiber NHibernate
- 2. Insertar una colección de entidades a granel utilizando Fluiber NHibernate
- 3. Mapeo de tabla de Fluiber-NHibernate sin clave principal
- 4. ¿Hay algún libro de Fluiber NHibernate?
- 5. NHibernate L2 Configuración de caché en Fluiber NHibernate
- 6. NHibernate utilizando alias de tabla incorrecta
- 7. Linq a NHibernate generar múltiples uniones a la misma tabla
- 8. orden NHibernate utilizando CASE
- 9. ¿Retroceder utilizando índices en Python?
- 10. Usando NHibernate con Codesmith para generar ORM
- 11. ¿Cómo agregar el detector de eventos a través de Fluiber NHibernate?
- 12. índices de recuento utilizando "para" en Python
- 13. ActiveRecord encontrando índices de tabla existentes
- 14. SQL Server Tabla de sinónimos con índices
- 15. copiar una tabla de MySQL incluyendo índices
- 16. Cómo decirle a Fluiber NHibernate que no debe asignar una propiedad de clase
- 17. ¿Cómo se puede automatizar una colección de componentes con Fluiber NHibernate?
- 18. Generar asignaciones XML de fluidez Nhibernate
- 19. Generar tabla en PDF
- 20. ¿Debo agregar índices a una tabla pequeña?
- 21. vista indizada vs Índices en la Tabla
- 22. Duplicar una tabla MySQL, índices y datos
- 23. NHibernate (3.1.0.4000) NullReferenceException utilizando Query <> y NHibernate Facility
- 24. VIEWS y Fluded NHibernate?
- 25. NHibernate - Force escaping en nombres de tabla
- 26. Generar proyecto C# utilizando CMake
- 27. Tabla de búsqueda utilizando SIMD
- 28. Generar esquema de base de datos de la asignación NHibernate
- 29. Python: obtener índices de lista utilizando la expresión regular?
- 30. ¿Generar tabla de colores por programación?
Correcto, la API ha cambiado y ahora se considera la forma correcta de establecer índices. He actualizado la respuesta a esta pregunta para reflejar este cambio. Gracias. –