كيف يمكنني إعداد علاقة فردية في Nhibernate؟ (حاليًا لا يعيد الكائن الأجنبي)

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

سؤال

لدي مستخدم ، بعضها موظف. هذه علاقة فردية وليس جميع المستخدمين موظفين.

عندما أحصل على مستخدم ، لا يبدو أنه يعيد معلومات الموظف ، فإنه قد تم وضع علامة عليه تمامًا. اعتقدت أنني قد حصلت على رأسي حول 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>
هل كانت مفيدة؟

المحلول

الشيء الوحيد الذي يمكنني رؤيته هو مختلف عن مثال Ayende هو تحديد علامة مفتاح أجنبي. ربما حاول تجريد التعيين إلى Ayende's مثال (وهو بالمناسبة هو نفس السيناريو بالضبط) وحاول إضافة الخصائص/السمات الإضافية واحدة تلو الأخرى؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top