تعيين خاصية إلى حقل من جدول آخر في Nhibernate
-
21-09-2019 - |
سؤال
النظر في الفصل التالي:
class Order {
int OrderId {get; set;}
int CustomerId {get; set;}
string CustomerName {get; set;}
//other fields go here
}
الذي يتم تعيينه إلى جدول الطلبات. هل من الممكن تعيين اسم المخصصات المخصصة لجدول العملاء من خلال علاقة المفتاح الخارجي؟
المحلول
نعم ، يمكنك استخدام انضم عنصر رسم الخرائط لهذا الغرض. خيار آخر هو تعيين طريقة عرض بدلاً من جدول. ولكن إذا كان ذلك ممكنًا ، فيجب عليك اتباع النهج الموجهة للكائن ورسم خريطة العلاقة بين العديد من العروض والعميل.
نصائح أخرى
أقترح بشدة أنك لا تستخدم <join/>
لهذا. على الرغم من أنه سيحقق ما طلبته ، إلا أنه يخلق مشاكل أخرى.
بدلاً من ذلك ، يجب أن يكون للطلب علاقة مع العميل. يمكنك بعد ذلك عرض الاسم إذا أردت ، على الرغم من أنه من الأسهل استخدامه فقط order.Customer.Name
.
لذلك ، فإنه يتلخص في هذا:
1) إضافة Customer
خاصية ل Order
public virtual Customer Customer { get; set; }
2) خريطة الخاصية (في المثال ، CustomerId هو اسم عمود FK)
<many-to-one name="Customer" column="CustomerId"/>
3) إذا كنت تريد على وجه التحديد الحصول على ملف CustomerName
العقار ، مشروعها من العميل:
public virtual string CustomerName { get { return Customer.Name; } }