سؤال

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

لدي بعض فوس التي لديها تقريبا أي سلوك الآخرين من لتغليف "مثل" ، على سبيل المثال:

public class Referral {
    public Case Case { get; set; } // this is the a reference to the aggregate root
    public ReferralType ReferralType { get; set; } // this is an enum
    public string ReferralTypeOther { get; set; }
} // etc, etc.

خاصة هذه الفئة إشارة إلى "القضية" التي مستويين ، حتى لو قلت لك كانوا في طريقهم للوصول إلى إحالة أنا يمكن أن تذهب:القضية.الاجتماعية.الإحالة (الحالة الاجتماعية وإحالة جميع الطبقات ، هناك اجتماعية واحدة داخل الحالة وهناك واحد الإحالة داخل الاجتماعية).الآن أنا أبحث في ذلك وأنا اكتب هذا, أنا لا أعتقد أنني بحاجة حالة في الإحالة لأنه سوف يكون الوصول إليها من خلال الكيان الاجتماعي, صحيح ؟

الآن, ليس هناك شك في ذهني أن هذا هو الشيء الذي ينبغي أن يكون VO وطريقة كنت تخطط لاستخدام أن تستمر هذه إلى قاعدة البيانات إما NHibernate تعيين بديل معرف (وأنا لا تزال غير واضحة جدا ، إذا كان أي شخص يمكن أن يرجى توضيح ذلك أيضا من شأنه أن يساعد لي منذ أنا لا أعرف إذا كان البديل معرف يتطلب أن لدي معرف في VO بالفعل أو إذا كان يمكن أن تعمل دون واحد) و/أو محمية معرف الخاصية التي لن تتعرض خارج الإحالة من الدرجة (لغرض استمرار إلى DB).

الآن إلى بلدي عنوان السؤال:يجب أن VO يكون جمع (في حالتي قائمة) داخله ؟ أستطيع أن أفكر فقط من هذا كما أن العديد من العلاقات في قاعدة البيانات ولكن بما أنه لا يوجد هوية ذلك لا يبدو كافيا لجعل الطبقة كيان.أدناه هو الكود:

public class LivingSituation {
    private IList<AdultAtHome> AdultsAtHome { get; set; }
    public ResidingWith CurrentlyResidingWith { get; set } // this is an enum
} // etc, etc.

هذه الفئة حاليا لا يملك هوية و AdultsAtHome الدرجة فقط الجوهرية أنواع (سلسلة الباحث).لذلك أنا لست متأكدا إذا كان هذا ينبغي أن يكون كيان أو إذا كان يمكن أن تبقى كما VO و أنا فقط بحاجة لتكوين اسندت إلى استخدام 1:m علاقة لهذه باستخدام الجداول الخاصة بهم و خاصة/حماية حقل معرف بحيث ORM يمكن أن تستمر إلى DB.

أيضا, يجب أن أذهب مع تطبيع الجداول لكل من دروسي أم لا ؟ أعتقد أنني سوف تحتاج فقط إلى استخدام الجدول في الصف الواحد عندما يكون هناك احتمال وجود حالات متعددة من الدرجة المخصصة كيان أو قيمة الكائن و/أو أن هناك إمكانية وجود مجموعات 1:m علاقات مع بعض من هذه الكائنات.ليس لدي أي مشكلة مع استخدام جدول واحد عن قيمة معينة من الأشياء التي قد لا يتجزأ من أنواع ولكن مع تداخل أنواع أعتقد أنه سيكون من المفيد استخدام تطبيع الجداول.أي اقتراحات في هذا أيضا ؟

آسف لكوني مطول مع أسئلة متعددة:

1) هل أنا بحاجة لبديل معرف (مع القول NHibernate) بالنسبة لي قيمة الأشياء ؟

2) إذا كان رقم 1 نعم ، ثم هل هذه تحتاج إلى أن تكون خاصة/محمية بحيث قيمة بلدي كائن "لا يزال" قيمة الكائن في المفهوم ؟

3) أن قيمة الكائن أخرى قيمة الأشياء (في القول قائمة) أو من شأنه أن يشكل الكيان ؟ (أعتقد أن الجواب على هذا هو لا, ولكن أنا أفضل أن تكون على يقين قبل المضي قدما.)

4) هل أحتاج في إشارة إلى الجذر الكلي من قيمة كائن مستويات قليلة من مجموع الجذر ؟ (لا أعتقد ذلك, هذا هو المرجح الرقابة على جانبي عند كتابة النموذج ، أي توافق؟)

5) هل هو موافق استخدام تطبيع الجداول لأشياء معينة (مثل تداخل الأنواع و/أو أنواع مع مجموعات من الخصائص التي تحتاج إلى الجداول الخاصة بهم على أي حال عن 1:m العلاقة) مع وجود ORM القيام تعيين أبسط قيمة الأشياء إلى نفس الجدول الذي ينتمي إلى الكيان ؟

شكرا مرة أخرى.

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

المحلول

نلقي نظرة على الإجابات على الأسئلة ذات الصلة هنا و هنا


1) نعم - إذا كنت تخزين فوس في الجدول الخاص بهم

2) إذا كان يمكنك استخدام خاص/حماية الهوية الملكية ، ثم كبيرة.بدلا من ذلك, يمكنك استخدام صريحة واجهات 'إخفاء' ID الملكية.

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

3) نعم يمكنك ذلك, ولكن مع القيود التالية:

  • يجب أن تكون نادرة جدا
  • إلا أنه ينبغي الإشارة الأخرى VOs

أيضا, النظر في هذا:VOs لا حول عصا.سيكون من السهل/كفاءة إعادة إنشاء كامل VO كل وقت الحاجة إلى ذلك ؟ إذا لا تجعل من الكيان.

4) يعتمد على كيفية كنت ترغب في تنفيذ الخاص بك إجمالي تأمين.إذا كنت ترغب في استخدام Ayende الحل, الجواب هو نعم.وإلا كنت في حاجة الى آلية لاجتياز كائن الرسم البياني إلى الجذر الكلي.

5) نعم.لا ننسى أن DDD هو استمرار جاهل (في عالم مثالي!).


ومع ذلك...

أعتقد الإحالة يجب أن يكون الكيان.تخيل هذه الأحاديث:

محادثة 1:

  • توم:"يا جو!هل يمكن أن تعطيني ديفيد جونه إحالة؟"
  • جو:"أي واحد؟"
  • توم:"آسف أقصد الإحالة رقم 123"

محادثة 2:

  • توم:"يا جو!هل يمكن أن تعطيني ديفيد جونه إحالة؟"
  • جو:"أي واحد؟"
  • توم:"أنا لا أهتم - فقط أعطني أي"

الحديث 1 تشير إلى أن الإحالة هي الكيان, بينما المحادثة 2 يوحي انها VO.

أكثر شيء واحد:لا Referral.ReferralType تغيير خلال هذا العمر (هناك تلميح آخر أنه ينبغي أن يكون كيان)?إذا كان لا تغيير النظر في استخدام polyporphism والسماح NH التعامل معها.

على أمل أن يساعد!

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