سؤال

أنا جديد إلى حد ما على NHibernate وعلى الرغم من أنني أجد الكثير من المعلومات حول رسم خرائط NHibernate على الويب، إلا أنني سخيف للغاية بحيث لا يمكنني العثور على هذه المعلومة.

إذن المشكلة هي أن لدي النموذج التالي:

Datamodel

هذه هي الطريقة التي أود أن تبدو.شخص واحد نظيف لديه خاصيتي عنوان.

في قاعدة البيانات، أود الاستمرار في ذلك في جدول واحد.لذلك، سيكون لصف الشخص اسم ShippingStreetname وعمود Streetname، حيث يتم تعيين العمود إلى ShippingAddress.Streetname والآخر إلى Address.StreetName

لقد وجدت مقالة عن واجهات بطلاقة, ، لكن مازلت لم تكتشف كيفية القيام بذلك من خلال تكوين XML.

شكرا لك مقدما!

تحديث:لقد وجدت الحل لهذا بنفسي.يمكن القيام بذلك من خلال العقدة ويعمل بشكل مباشر إلى حد ما.

لتحقيق تعيين العنوان وعنوان الشحن، كان علي فقط إضافة ما يلي إلى ملف

<component name="Address" class="Address">
  <property name="Streetname"></property>
  <property name="Zip"></property>
  <property name="City"></property>
  <property name="Country"></property>
</component>

<component name="ShippingAddress" class="Address">
  <property name="Streetname" column="ShippingStreetname" />
  <property name="Zip" column="ShippingZip" />
  <property name="City" column="ShippingCity" />
  <property name="Country" column="ShippingCountry" />
</component>
هل كانت مفيدة؟

المحلول

وطيب. لقد وجدت الحل نفسي. والمفتاح هو بناء في تكوين XML ويعمل بدلا بشكل جيد.

وهنا هو كيف يتم ذلك:

<component name="Address" class="Address">
  <property name="Streetname"></property>
  <property name="Zip"></property>
  <property name="City"></property>
  <property name="Country"></property>
</component>

<component name="ShippingAddress" class="Address">
  <property name="Streetname" column="ShippingStreetname" />
  <property name="Zip" column="ShippingZip" />
  <property name="City" column="ShippingCity" />
  <property name="Country" column="ShippingCountry" />
</component>

نصائح أخرى

هل يمكن تكوين هذا عن اثنين من العلاقات. منها مثلا.

<many-to-one name="ShippingAddress" class="Yournamespace.Address"/>
<many-to-one name="Address" class="Yournamespace.Address"/>

لا تحتاج حتى إلى معرف للعنوان.فقط فكر في مدى تكلفة الحفاظ على الهوية.لديك مشاكل في التزامن، وتحتاج إلى التفرد، وما إلى ذلك.هذا هو هدف ValueObjects (لا تخلط بينه وبين System.ValueObject، راجع تعريف DDD لـ ValueObject).في هذه الحالة، يكون العنوان عبارة عن ValueObject، لذا فهو لا يتطلب معرفًا.وإذا كنت بحاجة إلى مجموعة من العناوين، يمكنك تعيينها مثل "" انظر http://www.nhforge.org/doc/nh/en/index.html#collections-ofvalues.

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