Come ha installato uno-a-uno in NHibernate? (Attualmente non restituisce il corpo estraneo)

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

Domanda

Ho un utente, alcune delle quali sono un dipendente. Si tratta di una relazione uno-a-uno e non tutti gli utenti sono dipendenti.

Quando ottengo un utente non sembra essere riportare le informazioni dei dipendenti solo ha contrassegnato come nullo. Ho pensato che ho avuto la mia testa intorno NHibernate, ma ho provato a giocare con così tante proprietà sui file di mapping e non ce l'ho a lavorare. Tutte le idee o puntatori per quello che sto facendo non corretta?

User Class:

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

Mapping utenti:

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

classe Employee:

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

Mappatura dei dipendenti:

<?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>
È stato utile?

Soluzione

L'unica cosa che posso vedere è diverso dall'esempio di Ayende è che si specifica un tag di chiave esterna. Forse provare nudo la mappatura verso il basso per esempio di Ayende (che tra l'altro è l'esatto stesso scenario) e provare l'aggiunta delle proprietà supplementari / attributi uno per uno?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top