इसलिए मैं TDD के माध्यम से एक डेटा एक्सेस लेयर बना रहा हूं और कुछ हद तक चिंता का विषय है। मैं गलत रास्ते को शुरू नहीं करूंगा, इसलिए मुझे लगा कि मैं आप लोगों से पूछूंगा कि क्या मेरे विचार एक साफ सुथरे वास्तु के अनुरूप थे।
माय डेटा एक्सेस लेयर (DAL फॉर शॉर्ट) के तरीके, बहुत सरल हैं। वे डेटाबेस में संग्रहीत प्रक्रियाओं के अनुरूप हैं (चीजों को साफ रखने के लिए इसमें कॉल करने का कोई अन्य तरीका नहीं है), और उनके पास वही पैरामीटर हैं जो प्रक्रियाएं करते हैं। वे तो बस डेटाबेस से कनेक्ट करते हैं, और क्वेरी परिणाम वापस करते हैं। यहाँ एक उदाहरण है:
public int DeleteRecord(int recordId)
{
recordId.RequireThat("recordId").NotZeroOrLess();
List<SqlParameter> parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter { ParameterName = "@RecordId", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Input, Value = recordId});
return this.ExecuteNonQuery("DeleteRecord", parameters.ToArray());
}
यह इस प्रकार की विधि के लिए पूरी तरह से काम करता है क्योंकि मैं परिणाम सेट के साथ कुछ भी सार्थक नहीं कर रहा हूं। मैं बस यह सुनिश्चित करना चाहता हूं कि कमांड ने काम किया है, इसलिए मैं गैर-क्वेरी के परिणाम को वापस कर दूंगा, जो कि बस प्रभावित पंक्तियां हैं, और मैं उस नंबर का उपयोग करके तर्क को सत्यापित कर सकता हूं।
हालांकि, एक और डीएएल विधि में कहें, मैं एक रिकॉर्ड लोड करना चाहता हूं। मेरी लोड प्रक्रिया selects
तालिकाओं के एक समूह के खिलाफ निष्पादित करने जा रही है और वापस लौट रही है DataSet
, लेकिन मैं इस बात से जूझ रहा हूं कि क्या मेरे डीएएल को उपयोग करने की विधि के भीतर व्यावसायिक ऑब्जेक्ट बनाना चाहिए DataSet
, या यदि मेरी व्यावसायिक ऑब्जेक्ट्स में केवल एक Load()
विधि होनी चाहिए जो प्राप्त होती है DataSet
दाल से, और फिर मूल रूप से खुद को भरता है।
इसे डीएएल के माध्यम से करने से व्यावसायिक वस्तुओं में कम तर्क होगा (भले ही यह सिर्फ चुनिंदा तर्क है, यह अभी भी तर्क है), लेकिन डीएएल को थोड़ा भीड़ देगा और ऐसा महसूस कराएगा कि यह वास्तव में कुछ कर रहा है कि यह होना चाहिए ' t कर रहे हो।
आप लोग क्या सोचते हैं?