Laden...

NHibernate Bag (doppelte SQL-Statements)

Erstellt von Savage vor 14 Jahren Letzter Beitrag vor 14 Jahren 991 Views
S
Savage Themenstarter:in
100 Beiträge seit 2004
vor 14 Jahren
NHibernate Bag (doppelte SQL-Statements)

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?

S
Savage Themenstarter:in
100 Beiträge seit 2004
vor 14 Jahren

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.