سؤال

أخيرًا ، أتجول في التحقق من أحدث إصدار من EF وأواجه بعض المشاكل في الاختبار.

لذلك ، تحمل طبقة DAL الخاصة بي ملف .edmx وأنا أستخدم قالب MS POCO ، لذا لدي أيضًا ملفات وفئات .TT التي تم إنشاؤها.

لدي فئة قاعدة عامة في testProject.dal لقد أنشأت أن تلك الفئات تستمد منها. بمعنى آخر

public class BaseEntity<T> {}
public class Customer : BaseEntity<Customer> {}
public class Product : BaseEntity<Product> {}

ثم في طبقة TestProject.bll لدي بعض الفصول المشتقة أي

public class TestProject.BLL.Customer : TestProject.DAL.Customer {}
public class TestProject.BLL.Product : TestProject.DAL.Product {}

ثم ، في طبقة واجهة المستخدم الخاصة بي ، أتصل بكائن bll.customer الخاص بي. أحصل على خطأ يقول أنه لم يتم إضافة الإشارة إلى كائن dal.customer ، إلخ.

لديّ إشارة إلى مشروع BLL من مشروع واجهة المستخدم والإشارة إلى DAL من مشروع BLL الخاص بي.

لماذا تشكو طبقة واجهة المستخدم من أنها تعرف طبقة DAL عندما لا تتم الإشارة إليها في هذا المشروع؟

أيضا ، كمسألة جانبية ، هل هذا يبدو وكأنه تصميم "جيد"؟

شكرا لكم جميعا! أوسي

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

المحلول

كريج صحيح - يشير واجهة المستخدم الخاصة بك إلى أنواع كيان POCO. لكنني سأوضح أكثر قليلاً.

لو كنت في وضع كان مشروع واجهة المستخدم الخاص بك يشير إلى مجموعة BLL وكان هذا التجميع يشير إلى مجموعة DAL و ليس تعريض أي أعضاء من جمعية DAL علنًا, ، ثم ما تقوله سيكون صحيحا. لكن هذا ليس ما يحدث هنا. أنت تشير إلى مجموعة BLL والأنواع الموجودة في تلك التجميع التي ترث مباشرة من أنواع DAL وبالتالي أنواع DAL نكون مرئية علنًا لواجهة المستخدم الخاصة بك. لذلك ، يخبرك المترجم (بشكل صحيح) أنه يجب الرجوع إلى مجموعة DAL من مشروع واجهة المستخدم.

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

نصائح أخرى

واجهة المستخدم الخاصة بك يفعل الرجوع إلى أنواع كيان POCO - عبر المعلمة النوع العام على BaseEntity.

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