Ich fange an, NHibernate (3.0) zu lernen und nahm eine Kopie von Packt Publishing NHibernate 3.0 Cookbook.Ist mein NHibernate-Buch falsch?
Es gibt einen Abschnitt über One-to-Many-Mappings, durch den ich gehe, aber mit meiner eigenen Datenbank. Er schlägt vor, ich sollte etwas tun eine Eins-zu-Beziehung zwischen Kunden und ihre Domains zu modellieren:
public class Customer
{
public virtual int Id { get; protected set; }
public virtual string CustomerName { get; set; }
// Customer has many domains
public virtual IList<Domain> Domains { get; set; }
}
public class Domain
{
public virtual int Id { get; protected set; }
public virtual int CustomerID { get; set; }
public virtual string DomainName { get; set; }
}
Kunden Mapping:
<class name="Customer" table="tblCustomer">
<id name="Id">
<column name="CustomerID" sql-type="int" not-null="true"/>
<generator class="identity"/>
</id>
<property name="CustomerName" column="Customer"/>
<list name="Domains">
<key column="CustomerID"/>
<one-to-many class="Domain" />
</list>
</class>
Als ich das ich die folgende Fehlermeldung aus:
XML-Validierungsfehler: Das Element 'list' im Namespace 'urn: nhibernate-mapping-2.2' hat das ungültige untergeordnete Element 'eins-zu-viele' im Namespace 'urn: nhibernate-mapping-2.2'. Liste der möglichen erwarteten Elemente: 'index, list-index' im Namensraum 'urn: nhibernate-mapping-2.2'.
Das Beispiel Buch ist ein wenig komplexer, da sie verwenden Tabelle pro Unterklasse Zuordnungen:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="Eg.Core"
namespace="Eg.Core">
<subclass name="Movie" extends="Product">
<property name="Director" />
<list name="Actors" cascade="all-delete-orphan">
<key column="MovieId" />
<index column="ActorIndex" />
<one-to-many class="ActorRole"/> <-- Is this wrong?
</list>
</subclass>
</hibernate-mapping>
Ich vermute, das Buch ist falsch?
Aus der Fehlermeldung könnte man leicht annehmen, dass 'eins-zu-viele' nie ein Kind sein kann, das' listen' ist. Ich würde das einen Fehler in der Fehlermeldung nennen. – Mitja