मैं सिर्फ इस क्वेरी कक्षा को साझा करना चाहता था और इस पर अपने विचार प्राप्त करना चाहता था। क्वेरी क्लास एक डीबीकनेक्शन के खिलाफ क्वेरी निष्पादित करने में मदद करता है। मैंने कार्यान्वयन को शामिल नहीं किया है, यह पोस्ट करने के लिए थोड़ा सा है। यहाँ एक उदाहरण कॉल है, तो आप अनुमान लगा सकेंगे कि:मेरी क्वेरी कक्षा। आपकी राय?
OrdersDataTable table =
new Query(connection)
.Table("Orders")
.Fields("OrderID,CustomerID,Description,Amount")
.GreaterThan("OrderID", 1000)
.OrderBy("OrderID")
.Execute<OrdersDataTable>();
कारण यहाँ मैं कक्षा की तरह है:
- ADO.NET कमान कोड लिखने की जरूरत नहीं है। इस वर्ग को कॉल करने से ADO.NET समतुल्य की तुलना में कम लाइनें होती हैं।
- प्रत्येक सदस्य फ़ंक्शन देता है, इसलिए कई कॉलों को एक साथ जोड़ा जा सकता है। मुझे यकीन नहीं है कि इस पैटर्न के लिए कोई नाम है या नहीं। क्या आप जानते है?
- MySQL, OleDb और SqlServer बोलियां हैंडल करता है।
- एडीओ.NET समकक्ष की तुलना में मेरे लिए अधिक पठनीय लगता है।
- कॉल का आदेश अप्रासंगिक है। सभी पैरामीटर आंतरिक संग्रह में buffered हैं और निष्पादन कहा जाता है जब पढ़ा जाता है।
- मेरे परिदृश्य में मुझे कई डेटाबेस उत्पादों के साथ संवाद करने की आवश्यकता है, इसलिए मैं एक बार सामान्य रूप से क्वेरी लिखना चाहता हूं और केवल दिए गए कनेक्शन में पास होना चाहता हूं। संग्रहीत प्रोसेस जैसे डीबी-विशिष्ट विशेषताओं का लाभ उठाने में बहुत परेशानी होगी।
मेरे पास एक डीएएल है जो आंतरिक रूप से इस कक्षा का उपयोग करता है। यूआई कुछ क्वेरी पैराम पास करने और डेटाटेबल लौटाए जाने पर डीएएल में कॉल करेगा। कक्षा ने वास्तव में एलओएल डीएएल कार्यान्वयन को कम करने में मदद की है और साथ ही इसे और अधिक पठनीय बना दिया है।
OrdersDataTable orders = Orders.GetByOrderId(1)
और impl:
public static OrdersDataTable GetByOrderId(int id)
{
return
new Query(connection)
.Table("Orders")
.Fields("OrderID,CustomerID,Description,Amount")
.Equals("OrderID", id)
.Execute<OrdersDataTable>();
}
धन्यवाद
यहां नमूने दाल कॉल है!
संपादित करें: महान प्रतिक्रिया के लिए सभी को धन्यवाद। आप में से कई ने LinqToSql का सुझाव दिया। मैंने लिंक का चयन नहीं किया क्योंकि माइक्रोसॉफ्ट वर्तमान में केवल एसक्यूएल सर्वर का समर्थन करता है। मुझे जेट, माईएसक्ल और एसक्यूएल सर्वर टेबल से पूछताछ करने की ज़रूरत है।
किसी ने पूछा कि कैसे AND और OR क्लॉज का निर्माण किया जाता है। यहाँ प्रत्येक
//and example
public static OrdersDataTable GetByOrderIdAndCustomerId(int orderId, int customerId)
{
return
new Query(connection)
.Table("Orders")
.Fields("OrderID,CustomerID,Description,Amount")
.Equals("OrderID", orderId)
.Equals("CustomerID", customerId)
.Execute<OrdersDataTable>();
}
//or example
public static OrdersDataTable GetByOrderIdOrCustomerId(int orderId, int customerId)
{
return
new Query(connection)
.Table("Orders")
.Fields("OrderID,CustomerID,Description,Amount")
.OrBegin
.Equals("OrderID", orderId)
.Equals("CustomerID", customerId)
.OrEnd
.Execute<OrdersDataTable>();
}
उत्सुकता से बाहर ... यदि आप सी # का उपयोग कर रहे हैं, तो LINQ के साथ क्या गलत है? –
मुझे यह पसंद है! यह अच्छा होगा अगर आप मेरे जैसे हैं और 2.0 में फंस गए हैं। –
मुझे यह पसंद है। आपको यह पता होना चाहिए कि, यदि आप धाराप्रवाह इंटरफ़ेस डॉटिंग शैली पसंद करते हैं, तो आप इसे लिंक के साथ भी कर सकते हैं। –