سؤال

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

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

يبدو أن جميع المهام في المستودع أسهل ، لكن الآن التمييز بين قاعدة البيانات الخاصة بي وكائنات المجال غير واضح. ما هي الممارسة المناسبة هنا؟ تيا

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

المحلول

IMO إذا كان التطبيق بسيطًا بشكل نسبي ولا يمكنك تخيل تمزيق الوصول إلى البيانات المضي قدماً وجعل الدهانات في المستودع. ولكن إذا كنت تعتقد أن التطبيق سيصبح أكثر تعقيدًا في المستقبل أو قد ترغب في تغيير الوصول إلى البيانات ، فابقي هذه الوظيفة خارج المستودعات.

لقد قمت بتطبيقات مع تخصيص في المستودعات وغيرها في طبقة الخدمة ، وآخر كان لدي طبقة تحويل منفصلة (لم تكن واحدة في تحويل واحد وكانت الكائنات معقدة).

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

نصائح أخرى

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

إنه حول رسم خرائط البيانات. تحقق من هذا الرابط: http://www.martinfowler.com/eaacatalog/repository.html

تحقق أيضًا من هذا السؤال ذي الصلة: تم إرجاع ارتباك Irepository على الأشياء. لقد استخدمت خريطة مماثلة ، لكنني جعلتها تعمل على مستوى Iqueryable ، والتي أصبحت قادرة على القيام ببعض الأشياء المثيرة للاهتمام أثناء العمل مع كائن المجال بعد التعيين.

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