행 삭제할 수 없습니다 :NHibernate에이 일대 일대 내가 다음 엔터티있어
public ProjectMembershipMapping()
{
Property(pm => pm.IsAccepted, prop => prop.NotNullable(true));
Property(pm => pm.Permission, prop => prop.NotNullable(true));
ManyToOne(pm => pm.Member, mapping =>
{
mapping.Lazy(LazyRelation.NoLazy);
mapping.Cascade(Cascade.All);
});
ManyToOne(pm => pm.Project, mapping =>
{
mapping.Lazy(LazyRelation.NoLazy);
mapping.Cascade(Cascade.All);
});
ComposedId(pm =>
{
pm.ManyToOne(prop => prop.Member);
pm.ManyToOne(prop => prop.Project);
});
}
public ProjectMapping()
{
Set(proj => proj.Members,
mapping =>
{
mapping.Lazy(CollectionLazy.NoLazy);
mapping.Inverse(false);
mapping.Cascade(Cascade.All);
mapping.Table("ProjectMembership");
mapping.Key(k => k.Column("Project"));
},
action => action.OneToMany()
);
}
public class DevcoopUserMapping : ClassMapping<DevcoopUser>
{
Bag(user => user.ProjectMemberships,
mapping =>
{
mapping.Lazy(CollectionLazy.NoLazy);
mapping.Inverse(false);
mapping.Cascade(Cascade.All);
mapping.Table("ProjectMembership");
mapping.Key(k => k.Column("Member"));
},
action => action.OneToMany());
}
사용자가 많은 구성원이 될 수 있습니다 : 프로젝트, ProjectMapping 및 사용자, 그것은 manyHere에 많은 사람들이 매핑이 있어요 프로젝트. 자, 내가 프로젝트에서 그를 탈퇴한다고 가정합시다. ISession 객체에 의해 바로 삭제 ProjectMembership 객체는 저를 던졌습니다 :
한편deleted object would be re-saved by cascade (remove deleted object from associations)[devcoop.Daos.ProjectMembership#devcoop.Daos.ProjectMembership]
, 내가 먼저 (나에게 제안했다대로 나는 협회에서 삭제) 프로젝트 및 사용자에서이 ProjectMembership 인스턴스를 삭제하려고, I 예외 발생 :
could not delete collection: [devcoop.Daos.Project.Members#1][SQL: UPDATE ProjectMembership SET Project = null WHERE Project = @p0]
아무도 도와 줄 수 있습니까? 기발한 일이지만 매핑 주위에 뭔가를 망쳐 놓았지만, 나는 이것이 무엇인지 모릅니다.
3 건의 트랜잭션에서 hql 쿼리를 사용하여 프로젝트를 삭제할 수 밖에 없었습니다. 해결책이 아닌 지저분한 해결 방법입니다. 이 매핑 주위에 뭔가 명확하게 망쳐 놓았 기 때문에 NHibernate의 many-to-many에 대한 "best practice"가 있습니까? 정확히 무엇을 찾을 수 없는가? – soliloquyy