سؤال

عند إنشاء معايير ، يمكنك إضافة قيود تنطبق على خاصية. هناك طريقتان لإنشاء قيود:

Restrictions.Eq(string propertyName, object value)
أو
Restrictions.Eq(IProjection projection, object value)

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

أيه أفكار؟ شكرا لك مقدما!

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

المحلول

استخدم LINQ ، استعلام (NH3.x) أو امتدادات NH Lambda (NH2.x) أو ملحقات التعبير nhibernate (NH1.2)

كل هذه هي أكثر قوة من مجرد استخدام السلاسل.

نصائح أخرى

يمكن ان أشعر بألمك.

ولكن لا توجد طريقة لوضع إشارة ديناميكية إلى خصائصك باستخدام التوقعات في API للمعايير ، تمامًا كما لا يمكنك جعل رسم خرائط Nhibernate اكتشف تغييرًا في اسم العمود.

القيام بإيجاد واستبدال خطوة بخطوة مع "خاصية" بالعمل في معظم الحالات.

طالما أن لديك تغطية كاملة لاختبارات الوحدة (أنت لا أنت؟) لا ينبغي أن تكون مشكلة ، هل يجب أن :-)؟

سبب آخر لتجنب استخدام السلاسل لأسماء العقارات هو أن إعادة إعادة البناء باستخدام EG Resharper لا يمكن إصلاح تلك المراجع. هذا هو المكان الذي يضيء فيه nhibernate بطلاقة.

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