1

私にはユーザーがいて、そのうちの何人かは従業員です。これは 1 対 1 の関係であり、すべてのユーザーが従業員であるとは限りません。

ユーザーを取得すると、従業員情報が返されないようで、null としてマークされているだけです。nhibernate については理解できたと思いますが、マッピング ファイルで非常に多くのプロパティを試してみましたが、うまくいきませんでした。私が間違っていることについてのアイデアや指針はありますか?

ユーザー クラス:

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

ユーザー マッピング:

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

従業員クラス:

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

従業員のマッピング:

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

1 に答える 1

1

私が見ることができる唯一のことは、Ayendeの例とは異なり、外部キータグを指定することです。たぶん、マッピングをAyendeの(ちなみに、まったく同じシナリオです)まで削除して、追加のプロパティ/属性を1つずつ追加してみてください。

于 2010-10-04T16:59:12.683 に答える