Datos jerárquicos fluidos de NHibernate
-
05-07-2019 - |
Pregunta
Hola a todos. Pregunta rápida sobre la sintaxis fluida. Pensé que tenía esto abajo, pero estoy teniendo un extraño fallo. Básicamente, tengo un tipo de estructura jerárquica que intento persistir, y todo parece funcionar, excepto cuando hago una prueba de integración real con el db.
Tengo un objeto Nodo que tiene una propiedad principal, que es otro nodo, y un campo _children que respalda una propiedad secundaria de sólo lectura, que también es una colección de nodos.
Las propiedades manejan la correlación de las relaciones, y los objetos en memoria prueban muy bien. Sin embargo, cuando los recupero del repositorio (una base de datos SQLite en memoria en mis pruebas), cualquier Node's Children se incluye a sí mismo por alguna razón. ¿Alguna idea?
Mis asignaciones se realizan principalmente con AutoMap, pero he anulado lo siguiente:
mapping.References(x => x.Parent);
mapping.HasMany(x => x.Children).Inverse().Access.LowerCaseField(Prefix.Underscore);
También lo he intentado sin la llamada Inverse ().
Solución
Lo tengo. El problema era que tenía que decirle a la colección de niños en qué campo Id conectar para la clave externa.
Cambié esa asignación para que se vea así:
mapping.HasMany(m => m.Children)
.Inverse()
.KeyColumn("ParentId")
.Access.CamelCaseField(Prefix.Underscore)
.Cascade.All()