2008-10-10 11 views
16

मैं एक नई परियोजना शुरू करने के लिए तैयार हो रहा हूं और मैं इकाई ढांचे का शोध कर रहा हूं। मेरा सवाल यह है कि संस्थाओं को प्रमाणित करने के लिए सबसे अच्छी रणनीति क्या है? मैंने जिन अन्य परियोजनाओं पर काम किया है, उनमें अधिकांश सत्यापन के लिए विशेषताओं का उपयोग किया गया है, लेकिन स्पष्ट रूप से यह इकाई ढांचे में संभव नहीं है। संपत्ति सेटर्स में आंशिक तरीकों को संभालने का ऐसा एकमात्र तरीका है? सभी सलाह बहुत सराहना की है।इकाई फ्रेमवर्क प्रमाणीकरण

उत्तर

11

मैंने वास्तव में पहले इकाई फ्रेमवर्क का उपयोग नहीं किया है लेकिन एक त्वरित खोज इंगित करती है कि आपके पास कई विकल्प हैं।

1) अपने आवेदन

हमेशा एक विकल्प में एक और परत पर मान्य, मैं सिर्फ सोचा था कि मैं इसे बाहर वहाँ स्पष्ट रूप से फेंक होगा।

2) इकाई की OnChanged घटनाओं में हुक तो सत्यापन

संभावना भंगुर प्रदर्शन और भ्रामक/धीमी गति से करने के बाद बन जाएगा, तो आप कई अलग अलग गुण चीजें हैं जो प्रत्येक इकाई के लिए बदल सकते हैं।

3) को लागू आंशिक तरीकों संपत्ति मान्य करने के लिए बदल जाता है

this पद और this पूर्वाभ्यास के अनुसार आंशिक तरीकों सत्यापन के लिए उपलब्ध नहीं है। यह आपके सबसे अच्छे विकल्प की तरह लगता है क्योंकि यह बहुत घुसपैठ नहीं है और आप इच्छित सत्यापन को चुनिंदा रूप से कार्यान्वित कर सकते हैं।

मुझे उम्मीद है कि इससे मदद मिलती है। सौभाग्य।

+0

# 2 और # 3 कैसे भिन्न हैं? आंशिक तरीके जो उत्पन्न करती हैं वे ऑन चेंजेड इवेंट्स हैं ... जब तक कि मुझे कुछ याद नहीं आ रहा है। –

+0

आप सही हो सकते हैं। यह एक लंबा समय रहा है क्योंकि मैंने ईएफ को भी देखा है। – smaclell

+3

मैंने क्रमशः # 2 और # 3 को इकाई- और संपत्ति-स्तरीय सत्यापन के रूप में पढ़ा। इन दो रणनीतियों के अलग-अलग उद्देश्य हैं, बेशक: इकाई-स्तर सत्यापन सभी गुणों को एक साथ वैधता का परीक्षण करता है (उदाहरण के लिए कि परस्पर अनन्य गुण दोनों सेट नहीं हैं), जबकि संपत्ति-स्तरीय सत्यापन केवल एक ही संपत्ति की सामग्री को मानता है समय (उदाहरण के लिए कि एक ईमेल पता सही रूप का है)। – ladenedge

3

यदि आप एएसपी.नेट एमवीसी का उपयोग करते हैं, तो आप सत्यापन आवेदन ब्लॉक या सिस्टम का उपयोग कर सकते हैं। कॉम्पोनेंट मॉडेल। डेटाएनोटेशन। लेख Using Data Annotations और Using Application Block दिखाएं कि लिंक का उपयोग करके उन्हें कैसे करें, लेकिन इकाई-ढांचे के साथ उपयोग समान होना चाहिए।

+0

लिंक पुराने होने लगते हैं? –

+0

लिंक तय, संपादित पोस्ट - यह एमवीसी में लागू है। धन्यवाद जेफ – Shimmy

6

.NET 4 में, एंटीटी-फ्रेमवर्क में आउट-द-बॉक्स सत्यापन समर्थन होने जा रहा है।

की जाँच करें: http://blogs.msdn.com/adonet/archive/2010/01/13/introducing-the-portable-extensible-metadata.aspx

तो बहुत जटिल मान्यता तर्क लागू करने पर कड़ी मेहनत करने के लिए काम नहीं करते ...

+0

विचित्र रूप से, पीईएम एक्सटेंशन और इसके नमूने कुछ कारणों से एमएसडीएन के माध्यम से उपलब्ध नहीं हैं। अगर किसी के पास कोई अपडेट किया गया है तो मुझे एक अपडेटेड लिंक पसंद आएगा! – ladenedge

+0

मुझे आशा है कि वे हमें बेवकूफ नहीं बना रहे हैं ... मुझे लगता है कि मैं बॉक्स में कह रहा था कि गलत था, अब मुझे एहसास हुआ कि यह सिर्फ एक एडन है। यह कहता है कि एडन http://visualstudiogallery.msdn.microsoft.com/en-us/e6467914-d48d-4075-8885-ce5a0dcb744d से डाउनलोड किया जा सकता है लेकिन यह देखने के लिए लिंक देखें कि यह टूटा हुआ है। – Shimmy

+0

मुझे यह लिंक टिप्पणियों में मिला है http://code.msdn.microsoft.com/DesignerExtStartKit/Wiki/View.aspx?title=Home&version=3, अभी तक चेकआउट करने का समय नहीं था। – Shimmy

2

This आलेख वर्णन करता है इकाई की रूपरेखा के साथ मान्यता आवेदन ब्लॉक एकीकृत करने की विधि। यह कुछ मदद की हो सकती है।

0

यदि आप WPF या Windows फॉर्म का उपयोग कर रहे हैं तो आप IDataErrorInfo इंटरफ़ेस को कार्यान्वित कर सकते हैं।

WPF Application Framework (WAF) परियोजना के BookLibrary नमूना आवेदन दिखाता है कि इकाई की रूपरेखा के द्वारा बनाई गई संस्थाओं मान्य किया जा सकता है।

1

हम वस्तु संदर्भ() विधि overrident और SaveChanges रोकना है

public abstract class ValidationObjectContext : ObjectContext{ 
    ... 

    public override int SaveChanges(SaveOptions options){ 
     ValidateEntities(); 
     return base.SaveChanges(options); 
    } 

} 

इस तरह मान्यता अंतिम क्षण तक छोड़ दिया है इससे पहले कि कनेक्शन बना रहे हैं लेकिन उसके बाद आप (उम्मीद) कर रहे हैं के साथ खुश रहने के लिए ग्राफ और प्रतिबद्ध करने के लिए तैयार है, (किसी भी बदलाव पर सत्यापन के लिए अन्य विकल्पों के विपरीत, क्योंकि हमारे पास कुछ जटिल नियम केवल कई गुणों के सेट के बाद मान्य हैं।)।हमारे पास प्रमाणीकरण के दो स्तर हैं, मूल संपत्ति सत्यापन, स्ट्रिंग लम्बाई, शून्यता आदि जैसी चीजें और व्यापार तर्क सत्यापन, जिसके लिए एकाधिक ऑब्जेक्ट्स में नियमों की जांच करने की आवश्यकता हो सकती है, संभवतः डेटाबेस को पुष्टि करने के लिए मारना पड़ सकता है।

0

अपनी संस्थाओं में IValidatableObject को लागू करने पर विचार करें।

संबंधित मुद्दे