c# - NHibernate many-to-many, unable to delete a row -
i've got following entities: project, projectmapping , user, it's many manyhere mappings:
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()); }
user can member of many projects. let's i'm gonna unsubscribe him project. deleting projectmembership object isession object throws me:
deleted object re-saved cascade (remove deleted object associations)[devcoop.daos.projectmembership#devcoop.daos.projectmembership]
on other hand, when first try delete projectmembership instance project , user (i delete associations suggested me), exception:
could not delete collection: [devcoop.daos.project.members#1][sql: update projectmembership set project = null project = @p0]
can help? supposedly screwed around mappings, got no idea can be.
before delete projectmembership instance, remove both devcoopuser.projectmemberships- , project.members-collections.
i believe should work:
membership.member.projectmemberships.remove(membership); membership.project.members.remove(membership); session.delete(membership);
and think should remove cascadeall projectmembership mapping. i'm not entirely sure, think cascade delete members , projects in collections mapped cascadeall, don't want happen.
Comments
Post a Comment