2011-06-16 11 views
12

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

आप शायद उन्हें सरल रखने के लिए धन्यवाद, स्टीफन

public class Dog {  
    public int? Age { get; set; }  
    public Guid Id { get; set; }  
    public string Name { get; set; }  
    public float? Weight { get; set; }  
    public int IgnoredProperty { 
     get { return 1; } 
    } 
} 

var guid = Guid.NewGuid(); 
var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });    

dog.Count().IsEqualTo(1); 
dog.First().Age.IsNull(); 
dog.First().Id.IsEqualTo(guid); 
+0

मैं भी डैपर पर एक प्रश्न पूछने वाला हूं। मैं निष्पादन फ़ंक्शन में पूरी तरह से आबादी वाले TENTITY [] सरणी को भेजने का तरीका जानने का प्रयास कर रहा हूं। यह देखने के लिए कि क्या मार्क ने अपने सिर को दरवाजे में धक्का दिया है ... – IAbstract

+0

@IAbstract: फिर आप अपना प्रश्न क्यों नहीं पूछते? –

+0

@Robert: मैं ... कब/अगर मैं इसे समझ नहीं सकता। यह सिर्फ एक टिप्पणी थी ... उत्तर के तहत मेरी टिप्पणी देखें :) – IAbstract

उत्तर

11

पहले दो उदाहरण तो बस किसी भी "असली" डेटा का उपयोग नहीं करते हैं,।
हां, एक कनेक्शन इस्तेमाल किया जाता है (connection.Query(...)), लेकिन केवल इसलिए कि डैपर के तरीकों को कॉल करने का यही एकमात्र तरीका है (क्योंकि वे आईडीबीकनेक्शन इंटरफ़ेस का विस्तार करते हैं)।

select 'foo', 1 

... यह सिर्फ "उत्पन्न" करता है मक्खी पर इसके परिणाम, वास्तव में एक मेज से कुछ भी चुने बिना:

कुछ इस तरह पूरी तरह से वैध एसक्यूएल कोड है।

मानकों और अनाम प्रकार के साथ

उदाहरण:

var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });)

... बस डैप्पर की क्षमता to submit SQL parameters in the form of an anonymous type को दर्शाता है।
फिर से, क्वेरी वास्तव में इसे सरल रखने के लिए, तालिका से कुछ भी नहीं चुनती है।

+0

ईसाई धन्यवाद। मुझे यह भी मानना ​​है कि वे @ चिह्न का उपयोग कर रहे हैं कि यह SQL सर्वर की बोली है? क्या मुझे ओरेकल के लिए @ के साथ बदलना चाहिए? –

+0

क्षमा करें, मैं इस तथ्य को अधिक पढ़ता हूं कि आप ओरेकल का उपयोग करते हैं (मैं SQL सर्वर का उपयोग करता हूं, और ओरेकल को नहीं जानता)। हां, "@" एक एसक्यूएल पैरामीटर इंगित करता है। चूंकि डैपर स्वयं पूरी तरह से डेटाबेस स्वतंत्र है (http://code.google.com/p/dapper-dot-net/#Will_dapper_work_with_my_db_provider), आपको ओरेकल के बराबर "@" का उपयोग करना होगा। –

+0

+1: अच्छी जानकारी ... और MySQL के लिए, मैं '@' को '?' से बदल दूंगा क्या मैं नहीं – IAbstract

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