توفير نموذج المجال
-
22-08-2019 - |
سؤال
وأنهى مؤخرا قراءة تصميم مدفوعة اريك ايفانز المجال (مفيدة جدا وممتعة جدا) ولكن تأتي لمشروع الرئيسي الأول منذ الانتهاء من الكتاب، وحصلت على قضية كيفية التعامل مع نموذج المجال إنقاذ؟
وأنا أقدر استخدام الخدمات / مستودعات وكيف يمكن أن تساعد في نموذج ولكن كيف سيكون تعاملهم مع نموذج حفظ؟
وبلدي نموذج المجال السابق يحفظ سيتبع هيكل استدعاء الأسلوب التالية؛
و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 عن توفير كياناتها.
وإذا كان هناك الكثير من التعديلات الذهاب في طريق واحد يمكن أن يكون لتغليف هذا المنطق في خدمة النطاق ولديك خدمة معالجة ينقذ من خلال الجذور الإجمالية.