سؤال

لديّ جدول مستخدمين ، له قيد فريدة من نوعه على اسم المستخدم (لأسباب واضحة).

أنا أستخدم EF 4.0 DAL لملء قاعدة البيانات ، وفي عملية ترميز طريقة CreateUser ().

فعلا...

  1. من الأفضل التقاط sqlexception إذا حاولت إدراج اسم مستخدم موجود بالفعل.
  2. تحقق صراحة من اسم المستخدم قبل أن أحاول إدراجه في قاعدة البيانات؟

إذا تمكنت أيضًا من إعطاء أسباب لماذا ، فسيكون ذلك رائعًا!

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

المحلول

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

تحرير: لتجنب الالتباس ، أنا لا أقول ليس لدي الفهرس الفريد على الإطلاق. يجب أن يكون هناك ، ولكن لا ينبغي أن يكون الوسيلة الأساسية للتحقق من التفرد.

نصائح أخرى

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

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

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

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

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