Wie richte ich eine Eins-zu-Eins-Beziehung in nhibernate? (Zur Zeit nicht das Fremdobjekt zurück)

StackOverflow https://stackoverflow.com/questions/3857301

Frage

Ich habe einen User, Mitarbeiter, von denen einige sind. Dies ist eine Eins-zu-Eins-Beziehung und nicht alle Benutzer sind Mitarbeiter.

Wenn ich einen Benutzer bekommen es scheint nicht zurück, um die Mitarbeiterinformationen zu bringen hat es nur als null markiert. Ich dachte, ich meinen Kopf um nhibernate bekommen haben, aber ich habe mit so vielen Eigenschaften auf die Mapping-Dateien versucht zu spielen und haben es nicht funktioniert. Irgendwelche Ideen oder Zeiger, was ich tue falsch?

Benutzerklasse:

public class User
    {
        public virtual int UserID { get; set; }
        public virtual string Username { get; set; }
        public virtual string Title { get; set; }
        public virtual string Forename { get; set; }
        public virtual string Surname { get; set; }

        public virtual Employee Employee { get; set; }
    }

Benutzerzuordnung:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="Portal.Core"
                   namespace="Portal.Core.Data.Database">

  <class name="User" table="[Users]">
    <id name="UserID">
      <generator class="identity" />
    </id>
    <property name="Username" not-null="true" length="50" />
    <property name="Title" length="10" />
    <property name="Forename" length="50" />
    <property name="Surname" length="50" />

    <one-to-one name="Employee" class="Employee" fetch="select" lazy="false" foreign-key="EmployeeID" />


  </class>

</hibernate-mapping>

Mitarbeiter Klasse:

public class Employee
    {
        public virtual int EmployeeID { get; set; }
        public virtual string RoomNumber { get; set; }
        public virtual string JobTitle { get; set; }
        public virtual User User { get; set; }
    }

Mitarbeiter Mapping:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="Portal.Core"
                   namespace="Portal.Core.Data.Database">

  <class name="Employee" table="[Employees]">
    <id name="EmployeeID">
      <generator class="identity" />
    </id>
    <many-to-one name="User" unique="true" column="UserID" class="User" fetch="select" foreign-key="UserID" ></many-to-one>

    <property name="RoomNumber" length="20" />
    <property name="JobTitle" length="20" />

  </class>

</hibernate-mapping>
War es hilfreich?

Lösung

Das einzige, was ich unterscheidet sich von Ayende dem Beispiel sehen kann, ist, dass Sie einen Fremdschlüssel-Tag angeben. Vielleicht ist Ihr Mapping Beispiel Ayende nach unten versuchen Strippen (die übrigens ist genau das gleiche Szenario) und versuchen Sie, die zusätzlichen Eigenschaften / Attribute einer nach dem anderen?

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