سؤال

النظر في الفصل التالي:

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; } }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top