سؤال

وأنهى مؤخرا قراءة تصميم مدفوعة اريك ايفانز المجال (مفيدة جدا وممتعة جدا) ولكن تأتي لمشروع الرئيسي الأول منذ الانتهاء من الكتاب، وحصلت على قضية كيفية التعامل مع نموذج المجال إنقاذ؟

وأنا أقدر استخدام الخدمات / مستودعات وكيف يمكن أن تساعد في نموذج ولكن كيف سيكون تعاملهم مع نموذج حفظ؟

وبلدي نموذج المجال السابق يحفظ سيتبع هيكل استدعاء الأسلوب التالية؛

وParentClass.Save {

وParentClassDB.Save

وChildObject1.Save

       ChildObject1DB.Save

وChildObject2.Save

       ChildObject2DB.Save  
  etc etc 

و}

هل التحكم بالخدمة تأخذ من استدعاء appropiate حفظ الروتينية على الكائنات الطفل؟

هل كانت مفيدة؟

المحلول

في DDD، الكيان المجال لا تأخذ الرعاية من استمرارها. يجب أن لا يكون لديك طريقة Save() على ذلك، من الناحية المثالية.

ومستودع الخاص بك سوف يكون مثل هذا الأسلوب Save، أن يأخذ مثيل كيان في المعلمة:

public class PersonRepository
{
   //...

   public void Save(Person person)
   {
      this.dataContext.Save(person);
   }

   //...
}

واعتمادا على الكدسة، سيقوم مكتب إدارة السجلات التعامل مع توفير الكائن، أو سوف ينتهي بك عن طريق بناء استعلام لإنقاذ شخص، أو سوف ملء معلمات الإجراء المخزن مع من القيم مثيل، وما إلى ذلك.

إذا فهمت بشكل صحيح ما فعلت، قد يكون من الضروري نقل منطق استمرار كنت وضعت في الكيانات نطاق في أي مكان آخر، وربما في المستودعات، أو في DAL المستخدمة من قبل المستودعات الخاصة بك.

نصائح أخرى

هل تستخدم جذور الإجمالية؟ إنهم responsilbe عن توفير كياناتها.

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

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