hallo,
ich habe eine entität, welche eine collection beinhaltet (UserRoles):
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Gware.Core.Domain" assembly="Gware.Core" default-lazy="true">
<class name="Gware.Core.Domain.User, Gware.Core" table="Users" lazy="true">
<id name="ID" column="UID" type="Int64" unsaved-value="0">
<generator class="identity" />
</id>
<property name="Username" column="Username" unique="true" type="String" length="50" not-null="true" />
<property name="Password" column="Password1" type="String" length="50" />
<bag name="UserRoles" table="UserInRole" lazy="true" cascade="all-delete-orphan">
<key column="UID" />
<one-to-many class="Gware.Core.Domain.UserRoles, Gware.Core" />
</bag>
</class>
</hibernate-mapping>
UserRoles ist dabei eine generische liste. Wenn ich nun einen eintrag darin lösche oder hinzufüge, dann führt er immer 2 statements aus.
beim löschen
NHibernate: UPDATE UserInRole SET UID = null WHERE UID = @p0 AND uinrID = @p1; @p0 = '1', @p1 = '5'
NHibernate: DELETE FROM UserInRole WHERE uinrID = @p0; @p0 = '5'
beim hinzufügen
NHibernate: INSERT INTO UserInRole (DateAdded, UID, RID) VALUES (@p0, @p1, @p2); select SCOPE_IDENTITY(); @p0 = '06.05.2009 11:47:43', @p1 = '1', @p2 = '3'
NHibernate: UPDATE UserInRole SET UID = @p0 WHERE uinrID = @p1; @p0 = '1', @p1 = '6'
btw... nhibernate benutzt mssql2005
warum haut er mir immer 2 statements raus?
habe den fehler nun selbst gefunden.
lösung falls es jemand mal braucht:
hatte auf der anderen entität auch eine assocation drinnen, also eine bidirectionale. somit gehört an einer stelle noch ein inverse="true" rein.