2012-07-24 12 views
15

मैं डैप्पर उपयोग कर रहे हैं और मेरे वर्तमान परियोजना के साथ मैं ADO.NET का उपयोग करने के लिए जा रहा हूँ। मेरा सवाल यह है कि मैं ADO.NET का उपयोग करके एक आईनेमरेबल कैसे वापस कर सकता हूं? यहां मैं डैपर का उपयोग कर रहा हूं। क्या कोई इसे ऐसा करने के लिए परिवर्तित करने में मदद कर सकता है लेकिन एडीओ के साथ?मैं ADO.NET का उपयोग करके एक आईनेमरेबल <> कैसे वापस कर सकता हूं?

public IEnumerable<Favorites> GetFavorites() 
{ 
    using (SqlConnection sqlConnection = new SqlConnection(connString)) 
    { 
     sqlConnection.Open(); 
     var work = sqlConnection.Query<Favorites>("Select * from favorites"); 
     return work; 
    } 
} 
+0

तुम खुश हो अपने निकाय (उदा पसंदीदा) के लिए डेटासेट और DataRows के साथ काम करने या आप दृढ़ता से टाइप कक्षाओं की आवश्यकता है? – davenewza

+0

मानक ADO.NET कार्यक्षमता डेटा परिणामों को आपके लिए किसी ऑब्जेक्ट पर मैप करने जा रही नहीं है। आप अनिवार्य रूप से क्वेरी से 'डेटासेट' वापस प्राप्त करेंगे और इससे आपकी 'पसंदीदा' ऑब्जेक्ट्स बनाना होगा। – David

+3

बस, 'DataSet' पंक्तियों के माध्यम से पुनरावृति' हर एक – paul

उत्तर

19

तुम इतनी तरह yield return उपयोग कर सकते हैं: जाहिर है

public IEnumerable<Favorites> GetFavorites() 
{ 
    using (SqlConnection sqlConnection = new SqlConnection(connString)) 
    { 
     sqlConnection.Open(); 
     using (SqlCommand cmd = sqlConnection.CreateCommand()) 
     { 
      cmd.CommandText = "Select * from favorites"; 
      cmd.CommandType = CommandType.Text; 
      using (SqlDataReader reader = cmd.ExecuteReader()) 
      { 
       while (reader.Read()) 
       { 
        // Create a Favorites instance 
        var favorites = new Favorites(); 
        favorites.Foo = reader["foo"]; 
        // ... etc ... 
        yield return favorites; 
       } 
      } 
     } 
    } 
} 

, आप एक पसंदीदा निर्माता है कि एक IDataReader या SqlDataReader या किसी उपयोगिता विधि बनाने स्वीकार करता है मान भर बनाकर refactor कर सकते हैं, या जो भी हो, लेकिन यह मूल संरचना है।

0

यदि आप using ब्लॉक के भीतर सभी काम कर सकते हैं, तो आप DbDataReader पर LINQ और IEnumerable इंटरफ़ेस का लाभ उठा सकते हैं। यह कोड की एक उचित मात्रा के साथ स्वयं निहित शुद्ध ADO.NET प्रदान करता है।

var command = connection.CreateCommand(); 
command.CommandText = "select * from favorites"; 
using (var reader = command.ExecuteReader()) { 
    var work = from IDataRecord r in select ...; 
    ... use work ... 
} 
संबंधित मुद्दे

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