Ich bin sehr neu zu NHibernate, und ich stehe auf ein Problem beim Speichern einer Liste von untergeordneten Objekten.Eins-zu-viele-Liste, die nicht mit NHibernate gespeichert wird
HINWEIS
<class name="Note" table="NOTE">
<id name="NoteID" column="NOTE_ID">
<generator class="identity" />
</id>
...
<list name="Sections" table="NOTE_SECTIONS" cascade="all" lazy="false">
<key column="NOTE_ID"/>
<index column="SORT_ORDER"/>
<one-to-many class="Section"/>
</list>
</class>
Hinweis Abschnitt
<class name="Section" table="NOTE_SECTIONS">
<id name="SectionID" column="Section_ID">
<generator class="identity" />
</id>
<property name="NoteID" column="NOTE_ID"/>
...
</class>
Die Zuordnungen arbeiten perfekt zum Lesen der Daten. Allerdings, wenn ich eine Änderung der Note Section
machen, die Abfragen, die er erzeugt wird durch die richtigen Schritte zu gehen, aber dann bekomme ich folgende Fehlermeldung:
NHibernate.Exceptions.GenericADOException: could not delete collection: [Domain.Note.Sections#1][SQL: UPDATE NOTE_SECTIONS SET NOTE_ID = null, SORT_ORDER = null WHERE NOTE_ID = @p0] ---> System.Data.SqlClient.SqlException: Cannot insert the value NULL into column 'NOTE_ID', table 'NOTE_SECTIONS'; column does not allow nulls. UPDATE fails.
Ich habe lesen, dass, um wie zu sparen Dies muss bidirektional sein. Aber ich habe auch gelesen, dass bidirektionale Mappings nicht mit Listen funktionieren. Es ist wichtig, dass meine Sammlung eine geordnete Reihenfolge hat - was ist die beste Art zu sparen?
, die genau es war. Also, keine bidirektionale Beziehung benötigt. Ich wünschte manchmal, dass NHibernate ein bisschen offensichtlicher war. inverse = "true" ist nicht gerade das intuitivste Kommando für Anfänger. –