N Deleting a histogram

I have configured the wizard settings. Below is the hbm file. When I run some code like this

Favourite favourite = favourites.Find(f => f.Id== id);
user.Favourites.Remove(favourite);
m_UserRepository.Save(ref user);

I get an error

NHibernate.Exceptions.GenericADOException: cannot delete collection rows: [Model.Entities.User.Favourites # 249] [SQL: SQL is not available] ---> System.Data.SqlClient.SqlException: cannot insert a NULL value in the "UserId" column , table "BE. Favorite"; column does not allow zeros. Error UPDATE.

Any suggestions on what this means, please help.

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Model.Entities" schema="BE" assembly="Model" default-lazy="false">
  <class name="Model.Entities.User, Model" table="Users" >
    <id name="UserId" column="UserId" type="int" unsaved-value="0">
      <generator class="native" />
    </id>
    <property name="UserName" column="UserName" type="string" />

    <bag name="Favourites" cascade="all" lazy="true">
      <key column="UserId"/>
      <one-to-many class="Model.Entities.Favourite, Model"/>
    </bag>

  </class>
</hibernate-mapping>
+3
source share
3 answers

Have you tried installing inverse="true"on your bag?

+6
source

"--":

<class name="User">
  <id name="Id">
    <generator class="native">
      <param name="sequence">object_sequence</param>
    </generator>
  </id>
  <version name="Version" />
  <property name="Name" />
  <set name="Roles" table="User_Favourite">
    <key column="UserId"/>
    <many-to-many column="FavouriteId" class="Favourite"/>
  </set>
</class>

: (* inverse = "true" )

<class name="Favourite">
  <id name="Id">
    <generator class="native">
      <param name="sequence">object_sequence</param>
    </generator>
  </id>
  <version name="Version" />
  <property name="RoleName" />
  <set name="Users" table="User_Favourite" inverse="true">
    <key column="FavouriteId"/>
    <many-to-many column="UserId" class="User"/>
  </set>
</class>

NHibernate 2.0:

. <key> <one-to-many> NOT NULL, NHibernate . , ( ), inverse="true". . .

, , . ?

P.S.: , lazy = "true" , NHibernate 1.2.

+6

try changing your cascade rule to:

<bag name="Favourites" cascade="all,delete-orphan" lazy="true">
  <key column="UserId" not-null="true"/>
  <one-to-many class="Model.Entities.Favourite, Model"/>
</bag>
+1
source

All Articles