1

와 필터링 관계를 저장 나는 사용자가 FavoriteJobs를 다음 엔터티은 (유창함) NHibernate에

User 
Job 

을 가지고있다. 이것은 Job과의 다 대다 관계입니다. 또한이 연관은 활성 (아카이브되지 않은) 작업 만 반입되도록 필터링됩니다.

FavoriteJobs 연결에 대한 매핑은 다음과 같습니다.

HasManyToMany(x => x.FavoriteJobs) 
.Table("UserJob") 
.ParentKeyColumn("UserId") 
.ChildKeyColumn("JobId") 
.ApplyChildFilter<ExcludeArchivedJobsFilter>("IsArchived = :condition") 
.Cascade.None(); 

작업은 응용 프로그램에서 언제든지 보관 및 보관 취소 할 수 있습니다.

사용자를 가져올 때 FavoriteJobs 컬렉션은 올바른 작업으로 채워지고 활성 작업 만 채워집니다.

문제는 사용자를 저장하려고 할 때 필터링 된 모든 작업이 연결이 끊어져 상호 참조 테이블에서 삭제 된 것처럼 처리된다는 것입니다 (마치 필터링 된 작업을 표시하지 않은 사용자와 마찬가지로). 더 이상 좋아하는중인).

필터링 된 항목을 그냥 필터링되고 삭제되지 않는 것으로 표시하는 패턴이 있는지 궁금합니다.

업데이트 이벤트가있을 때 매핑에서 필터를 사용 중지하는 것과 같습니다.

나는 어떤 아이디어라도 감사 할 것입니다.

+0

어떤 유형의 컬렉션입니까? –

+0

나는 목록과 세트로 시도했다. –

답변

0

집합 컬렉션은 저장시 컬렉션을 완전히 다시 작성하므로 필터링 된 요소가 사라집니다.

나는 목록을 수집 때문에 대신 가방이나 idbag로 사용해 볼 수 NHibernate - Filtered ManyToMany relationship returns null records

에 주어진 이유를 푼다 것이 될 수 있을까요? 또는 업데이트 시나리오에서 필터를 사용하지 않도록 설정하십시오.