Comment faire un à une relation de configuration I dans NHibernate? (Ne retourne pas actuellement l'objet étranger)

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

Question

J'ai un utilisateur, dont certains sont un employé. Ceci est une à une relation et non tous les utilisateurs sont employés.

Quand je reçois un utilisateur, il ne semble pas ramener l'information des employés, il a juste marqué comme nul. Je pensais que j'ai ma tête NHibernate, mais je l'ai essayé de jouer avec autant de propriétés sur les fichiers de mappage et ne l'ai pas travailler. Toutes les idées ou des pointeurs à ce que je fais incorrect?

Classe de l'utilisateur:

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; }
    }

Cartographie de l'utilisateur:

<?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>

employé de classe:

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; }
    }

employé 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>
Était-ce utile?

La solution

La seule chose que je peux voir est différent de l'exemple de Ayende est que vous spécifiez une balise de clé étrangère. Peut-être essayer de démonter votre carte jusqu'à Ayende de l'exemple (qui, par la voie est exactement le même scénario) et essayez d'ajouter les propriétés supplémentaires / attributs un par un?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top