Frage

Modell: Ich habe ein Modell, bei dem eine Installation mehr „Computer System“ enthält.

Datenbank: Die Tabelle Installationen hat zwei Spalten Name und Beschreibung. Die Tabelle Computersystem hat drei columsn Namen, Beschreibung und InstallationID.

Mappings:

Ich habe die folgende Abbildung für die Installation:

<?xml version="1.0" encoding="utf-8"?>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="myProgram.Core" namespace="myProgram">

  <class name="Installation" table="Installations" lazy="true">

    <id name="Id" column="Id" type="int">
      <generator class="native" />
    </id>

    <property name="Name" column="Name" type="string" not-null="true" />
    <property name="Description" column="Description" type="string" />


    <bag name="ComputerSystems" inverse="true" lazy="true" cascade="all-delete-orphan">
      <key column="InstallationId" />
      <one-to-many class="ComputerSystem" />
    </bag>

  </class>

</hibernate-mapping>

Ich habe die folgende Abbildung für COMPUTER:

<?xml version="1.0" encoding="utf-8"?>

<id name="Id" column="ID" type="int">
  <generator class="native" />
</id>

<property name="Name" column="Name" type="string" not-null="true" />
<property name="Description" column="Description" type="string" />

<many-to-one name="Installation" column="InstallationID" cascade="save-update" not-null="true" />

Klassen:

Die Installationsklasse ist:

public class Installation 
{

    public virtual String Description { get; set; }
    public virtual String Name { get; set; } 


    public virtual IList<ComputerSystem> ComputerSystems
    { 
        get
        {
            if (_computerSystemItems== null)
            {
                lock (this)
                {
                    if (_computerSystemItems== null)
                        _computerSystemItems= new List<ComputerSystem>();
                }
            }
            return _computerSystemItems;
        } 
        set
        {
            _computerSystemItems= value; 
        }
    }

    protected IList<ComputerSystem> _computerSystemItems;




    public Installation()
    {
        Description = "";
        Name= "";
    }


    }

Die Computersystem-Klasse ist:

public class COMPUTER { public virtual String Name {get; einstellen; } public virtual String Beschreibung {get; einstellen; } public virtual Installation Installation {get; einstellen; }

}

Das Problem ist, dass ich einen Fehler beim Versuch, eine Installation zu löschen, die ein Computersystem enthält. Der Fehler ist: „gelöschte Objekt wieder gespeichert durch Kaskade würde (Entfernen Objekt aus Verbänden gestrichen)“. Kann jemand helfen ?

Viele Grüße, Seb

War es hilfreich?

Lösung

Ich denke, das durch die Kaskade verursacht = „save-Update“ in der Zuordnungsdatei für Computersystem. Wenn Sie in dieser Richtung (Kind Eltern) zu Kaskade nicht brauchen dann können Sie in der Lage sein, es zu entfernen.

Alternativ können Sie versuchen, die Computersysteme Liste der Clearinginstallationsobjekt vor der Installation löschen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top