Pregunta

He una jerarquía de las tablas 3 niveles de profundidad (QualificaionType tiene muchas QualificationGroups, que tienen muchas calificaciones) asignada como esto:

// QualificationType
HasMany(x => x.QualificationGroups)
    .Inverse()
    .KeyColumns.Add("QualificationGroupId")
    .AsBag()
    .Cascade.AllDeleteOrphan()
    .Access.CamelCaseField(Prefix.Underscore);

// Qualification Group
HasMany(x => x.Qualifications)
    .Inverse()
    .KeyColumns.Add("QualificationId")
    .AsBag()
    .Cascade.AllDeleteOrphan()
    .Access.CamelCaseField(Prefix.Underscore);

Cuando elimino un Grupo de clasificación, borra todas las titulaciones relacionadas con ella. Pero cuando intento eliminar un tipo de clasificación, que trata de eliminar todos los relacionados con grupos de clasificación, pero no sus calificaciones.

¿Cómo puedo conseguir que se conectan en cascada hasta el fondo de manera que si elimino un tipo, borra todos los grupos y todas sus calificaciones? Qué necesito para recorrer todos los grupos primero y elimino? Parece que este debe ser capaz de ser manejado a través de asignaciones sola.

Para su información, estoy usando NHibernate Fluido 1.0RTM y NHibernate 2.1

¿Fue útil?

Solución

lo he descubierto ... las asignaciones no son correctos.

Deben ser la siguiente:

// QualificationType
HasMany(x => x.QualificationGroups)
    .Inverse()
    .KeyColumn("QualificationTypeId")
    .AsBag()
    .Cascade.AllDeleteOrphan()
    .Access.CamelCaseField(Prefix.Underscore);

// Qualification Group
HasMany(x => x.Qualifications)
    .Inverse()
    .KeyColumn("QualificationGroupId")
    .AsBag()
    .Cascade.AllDeleteOrphan()
    .Access.CamelCaseField(Prefix.Underscore);

tuve la columna tecla equivocada en cada uno.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top