두 테이블간에 다 대다 관계가있는 매핑을 수행했습니다. 필자의 경우 'TB_EMAIL_GRUPO_ARQUIVO'인 매핑 테이블에서 항목을 삭제하려면 어떻게해야합니까? 난이 "조인"테이블에서 데이터를 삭제할 필요가 없으며 "부모 테이블"에서 삭제할 필요가 없습니다.다 대다 관계에서 항목 삭제
GrupoModulo
public GrupoModuloMap()
{
Schema(Const.SCHEMA);
Table(Const.TB_EMAIL_GRUPO_MODULO);
CompositeId()
.KeyReference(x => x.Grupo, Const.ID_GRUPO)
.KeyReference(x => x.Modulo, Const.ID_MODULO);
Map(x => x.GrupoId).Column(Const.ID_GRUPO).ReadOnly();
Map(x => x.ModuloId).Column(Const.ID_MODULO).ReadOnly();
HasManyToMany(x => x.Arquivos)
.Table(Const.TB_EMAIL_GRUPO_ARQUIVO)
.ParentKeyColumns.Add(Const.ID_GRUPO, Const.ID_MODULO)
.ChildKeyColumn(Const.ID_ARQUIVO)
.Cascade.SaveUpdate()
.Not.LazyLoad();
}
ArquivoRetorno
public ArquivoRetornoMap()
{
Schema(Const.SCHEMA);
Table(Const.TB_EMAIL_ARQUIVO_RETORNO);
Id(x => x.Id)
.Column(Const.ID_ARQUIVO)
.GeneratedBy.Sequence("SEQ_TB_EMAIL_ARQUIVO_RETORNO")
.Length(7).CustomSqlType("number(7)")
.Not.Nullable();
Map(x => x.Nome)
.Column("NM_ARQUIVO_RETORNO")
.Length(50)
.Not.Nullable();
References(x => x.Modulo)
.Column(Const.ID_MODULO)
.Not.Nullable();
HasManyToMany(x => x.GrupoModulos)
.Table(Const.TB_EMAIL_GRUPO_ARQUIVO)
.ChildKeyColumns.Add(Const.ID_GRUPO, Const.ID_MODULO)
.ParentKeyColumn(Const.ID_ARQUIVO)
.Cascade.SaveUpdate()
.Not.LazyLoad();
}
나는 다음과 같은 오류 받고 있어요 삭제하려고 할 때마다
:deleted object would be re-saved by cascade (remove deleted object from associations)[Domain.Entity.GrupoModulo#Domain.Entity.GrupoModulo]
누군가가 어떤 생각을 가지고 있습니까?
감사 (하지는 캐스케이드를 사용합니까), 그 역시 다른 사람을 도울 수 있기를 바랍니다. 방금 두 번째 솔루션을 사용하여 GrupoModulo에서 메소드를 만들었습니다 (아래 코드 참조). 그리고 매핑을 그대로 두었습니다. public virtual void RemoverArquivo (ArquivoRetorno arquivo) { Arquivos.Remove (arquivo); } –