tengo 3 tablas en mi base de datos:nhibernate "en cascada =" all-delete-orphan" error
- Proyectos (id, nombre)
- Etiquetas (id, nombre)
- ProjectsTagss (id, projectId, TagID)
Como se puede ver los ProjectsTags mesa es una mesa de bridge
aquí es mi mapeo fluidez nhibernate
ProjectMap.cs:
Map(x => x.Name).Not.Nullable();
HasMany(x => x.ProjectsTags).AsBag().Inverse()
.Cascade.AllDeleteOrphan().Fetch.Select().BatchSize(80);
ProjectsTagsMap.cs:
References(x => x.Project).Not.Nullable();
References(x => x.Tag).Not.Nullable();
TagMap.cs:
Map(x => x.Name).Not.Nullable();
Como puede ver, históricamente no tenía la tabla de etiquetas vinculada a otra cosa. Ahora necesito generar un informe para mostrar la etiqueta y con qué frecuencia se utiliza esa etiqueta, así que necesito unirme de Tag a ProjectsTag. He intentado añadir esta línea en el tagsmap:
HasMany(x => x.ProjectsTags).AsBag().Inverse()
.Cascade.AllDeleteOrphan().Fetch.Select().BatchSize(80);
, pero cuando voy a actualizar el nombre de un objeto etiqueta y comprometerse, me sale este error:
Una colección con cascada = "all-eliminar -orphan "ya no estaba referenciado por la entidad propietaria instancia
alguien puede ver algo mal con lo que agregué que estaría causando esta excepción nhibernate cuando simplemente actualizo la tabla de etiquetas. Una vez más mi objetivo es ser capaz de hacer algo como:
Tag.ProjectTags.Count();
Aquí hay un código adicional solicitada:
mi etiqueta Clase:
public class Tag
{
public virtual IList<ProjectTag> ProjectTags { get; set; }
public virtual string Name { get; set; }
public virtual string Description { get; set; }
}
Muéstranos el código en el que actualizar las etiquetas. Y por favor escriba un título significativo que exprese la pregunta. –
@Stefan Steinegger - título actualizado para reflejar el error – leora
El error ocurre cuando elimina un elemento de la lista y lo vuelve a utilizar en otra lista. Entonces, por favor muéstranos el código que escribiste para actualizar los datos. –