ASP.NET कोर में SqlClient का उपयोग कैसे करें?


83

मैं ASP.net कोर में SQLClient लाइब्रेरी का उपयोग करने की कोशिश कर रहा हूं, लेकिन यह काम नहीं कर पा रहा है। मैंने इस लेख को ऑनलाइन सेटअप करने की सलाह दी, लेकिन यह मेरे लिए काम नहीं कर रहा है: http://blog.developers.ba/using-classic-ado-net-in-asp-net-vnext/

मेरे पास एक सरल कंसोल एप्लिकेशन पैकेज है। मेरी परियोजना। इस तरह दिखता है:

{
  "version": "1.0.0-*",
  "description": "DBTest Console Application",
  "authors": [ "" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",

  "compilationOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "System.Data.Common": "4.0.1-beta-23516",
    "System.Data.SqlClient" :  "4.0.0-beta-23516"
  },

  "commands": {
    "DBTest": "DBTest"
  },

  "frameworks": {
    "dnx451": { },
    "dnxcore50": {
      "dependencies": {
        "Microsoft.CSharp": "4.0.1-beta-23516",
        "System.Collections": "4.0.11-beta-23516",
        "System.Console": "4.0.0-beta-23516",
        "System.Linq": "4.0.1-beta-23516",
        "System.Threading": "4.0.11-beta-23516"
      }
    }
  }
}

और मैं निम्नलिखित कोड का प्रयास करता हूं:

using System;
using System.Data.SqlClient;

namespace DBTest
{
    public class Program
    {
        public static void Main(string[] args)
        {
            using (SqlConnection con = new SqlConnection(ConnStr)) {
                con.Open();
                try {
                    using (SqlCommand command = new SqlCommand("SELECT * FROM SAMPLETABLE", con)) {
                        command.ExecuteNonQuery();
                    }
                }
                catch {
                    Console.WriteLine("Something went wrong");
                }
            }

            Console.Read();
        }
    }
}

लेकिन निम्नलिखित त्रुटियां प्राप्त करें:

यहाँ छवि विवरण दर्ज करें

किसी और को यह काम मिल गया?


1
मैं आपके किसी भी निर्भरता में System.Runtime का संदर्भ नहीं देखता। क्या आपने एक जोड़ने की कोशिश की है?
थोरिया

1
यह भी कि आप UPDATE, INSERT or DELETEअपने एसक्यूएल में कमांड नहीं कर रहे हैं, तो आप केवल एक ही पंक्ति में लौटने पर डेटाबेस या एक्सक्यूट्सकल्चर विधि से डेटा वापस करने के command.ExecuteNonQuery();लिए Fill()विधि का उपयोग क्यों कर रहे हैं । आपको न केवल संदर्भ जोड़ने की जरूरत है, using section in the .cs file class headerबल्कि मैन्युअल रूप से उन्हें referenceपरियोजना में नोड में जोड़ना होगा
MethodMan

1
आपकी त्रुटियों से संकेत मिलता है कि आपने DNX 4.5.1 के लिए उचित संदर्भ नहीं जोड़े हैं। आप एक ही समय में दो प्रोजेक्ट प्रकारों के लिए निर्माण कर रहे हैं। यदि आप DNX.4.5.1 के बारे में परवाह नहीं करते हैं, तो इसे अपने कॉन्फ़िगरेशन से हटा दें और इसे बनाना चाहिए।
राजमिस्त्री

1
दोस्तों - आप सभी का बहुत बहुत धन्यवाद! DNX 4.5.1 अनुभाग को हटा दिया और सेटिंग्स के लिए System.Runtime की निर्भरता को जोड़ा और यह पूरी तरह से काम किया (सभी एक दृश्य स्टूडियो पुनरारंभ होने के बाद!)। एक बार फिर धन्यवाद!!!
रोब मैककेब

जवाबों:


163

मुझे लगता है कि आप इस हिस्से को ट्यूटोरियल में याद कर सकते हैं:

System.Data और System.Data.SqlClient को संदर्भित करने के बजाय आपको Nuget से हथियाने की आवश्यकता है:

System.Data.Common और System.Data.SqlClient।

वर्तमान में यह इन दो पुस्तकालयों के लिए प्रोजेक्ट.जॉन -> एस्पनेटकोर 50 सेक्शन में निर्भरता पैदा करता है।

"aspnetcore50": {
       "dependencies": {
           "System.Runtime": "4.0.20-beta-22523",
           "System.Data.Common": "4.0.0.0-beta-22605",
           "System.Data.SqlClient": "4.0.0.0-beta-22605"
       }
}

System.Data.Common और System.Data.SqlClient को Nuget के माध्यम से प्राप्त करने का प्रयास करें और देखें कि क्या यह आपके लिए उपरोक्त निर्भरता जोड़ता है, लेकिन संक्षेप में आप System.Runtime को याद कर रहे हैं

संपादित करें: मोजार्ट के अनुसार, यदि आप .NET कोर 3+ का उपयोग कर रहे हैं, तो Microsoft.Data.SqlClientइसके बजाय संदर्भ ।


6
मुझे केवल इसके System.Data.SqlClientमाध्यम से जोड़ना था Nugetऔर यह इसमें काम करता Dapperहै .NET Core 1.1
तडज

2
मैंने सिर्फ Nuget के माध्यम से system.data.sqlclient जोड़ा है और यह काम करता है
Shahram

1
इसमें तय किया गया लगता है .NET Core 2.0। मेरे लिए कम से कम।
तद्ज

मैंने कॉन्फ़िगर फ़ाइल के संपादन के बजाय इंटरफ़ेस का उपयोग किया: सॉल्यूशन एक्सप्लोरर, NuGet ... में निर्भरता पर राइट-क्लिक किया।
एवगेनी नोज़ड्रेव

मुझे इस पैकेज को Nuget या dotnet add पैकेज के साथ जोड़ने में समस्याएँ थीं। एक समाधान यह था कि निर्भरता को सही ढंग से प्रोजेक्ट फ़ाइल में रखा जाए और एक रिस्टोर - डॉटनेट रिस्टोर किया जाए। Nuget.config फ़ाइल में एक पैकेज स्रोत अनुभाग में nuget.org होना चाहिए।
user2809176

69

डॉट नेट कोर 3 के लिए, Microsoft.Data.SqlClient का उपयोग किया जाना चाहिए।


9
यह टिप्पणी .NET कोर 2.2 से .NET कोर 3.0 के लिए किसी के लिए भी जीवन-रक्षक है। सभी संदर्भों को System.Data.SqlClient से Microsoft.Data.SqlClient में बदलें।
एडमिर तुज़ोविक

@mozart, .Net Core 2.2 Microsoft.Data.SqlClient का उपयोग कर सकता है? या Microsoft.Data.SqlClient सिर्फ .net Core 3 के लिए उपयोग किया जाता है?
दलेमन

@ डेलमैन मैंने इस मुद्दे को .Net कोर 3 में स्थानांतरित करते हुए हल किया है इसलिए मैंने इसे 2.2 के साथ आज़माया नहीं है, मुझे नहीं लगता कि यह काम करता है "प्रत्येक पैरामीटर में डेटा प्रकार सही है?", लेकिन आप इसे आज़मा सकते हैं।
मोजार्ट अल खतीब

@Mozar और डेटाबेस के लिए आपका कनेक्शन अभी भी स्ट्रिंगर का उपयोग कर रहा है?
डैलमैन

@ डलमैन यदि आपका मतलब SqlConnectionStringBuilder है, तो हाँ इस NuGget में उपलब्ध है।
मोजार्ट अल खतीब

3

इसे आज़माएं अपना प्रोजेक्ट नाम खोलें ।

<PackageReference Include="System.Data.SqlClient" Version="4.6.0" />

आपको इस संदर्भ को " ItemGroup " टैग के अंदर जोड़ना होगा ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.