ASP.NET Core'da SqlClient nasıl kullanılır?


83

ASP.net Core'da SQLClient kitaplığını kullanmaya çalışıyorum, ancak çalışmasını sağlayamıyorum. Bu makaleyi çevrimiçi olarak nasıl kurulacağını öneren ancak benim için çalışmadığını buldum: http://blog.developers.ba/using-classic-ado-net-in-asp-net-vnext/

Basit bir konsol uygulama paketim var. Projem.json şuna benziyor:

{
  "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"
      }
    }
  }
}

Ve aşağıdaki kodu deniyorum:

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();
        }
    }
}

Ancak aşağıdaki hataları alın:

görüntü açıklamasını buraya girin

Bunu çalıştıran başka kimse var mı?


1
Bağımlılıklarınızın hiçbirinde System.Runtime'a bir başvuru göremiyorum. Bir tane eklemeyi denedin mi?
thorkia

1
Ayrıca yapmadığınız UPDATE, INSERT or DELETEkullandığınız neden böylece sql komutunu command.ExecuteNonQuery();kullanarak göz Fill()bir veritabanı veya sadece tek bir satır dönen eğer ExecuteScalar yönteminden veri döndürmek için yöntem. sadece referansları eklemeniz değil, using section in the .cs file class headeraynı zamanda bunları referenceprojedeki düğüme manuel olarak eklemeniz gerekir
MethodMan

1
Hatalarınız, DNX 4.5.1 için uygun referansları eklemediğinizi gösterir. Aynı anda iki proje türü için inşa ediyorsunuz. DNX.4.5.1 ile ilgilenmiyorsanız, bunu yapılandırmanızdan kaldırın ve inşa etmelidir.
mason

1
Beyler - hepinize çok teşekkür ederim! DNX 4.5.1 bölümü kaldırıldı ve System.Runtime bağımlılığı ayarlara eklendi ve mükemmel çalıştı (hepsi bir görsel stüdyo yeniden başlatıldıktan sonra olsun!). Tekrar teşekkürler!!!
Rob McCabe

Yanıtlar:


163

Öğreticide bu bölümü kaçırmış olabileceğinizi düşünüyorum:

System.Data ve System.Data.SqlClient'e başvurmak yerine Nuget'ten almanız gerekir:

System.Data.Common ve System.Data.SqlClient.

Şu anda bu, project.json -> aspnetcore50 bölümünde bu iki kitaplığa bağımlılık yaratır.

"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"
       }
}

Nuget aracılığıyla System.Data.Common ve System.Data.SqlClient almayı deneyin ve bunun sizin için yukarıdaki bağımlılıkları ekleyip eklemediğine bakın, ancak kısaca System.Runtime eksiksiniz.

Düzenleme: Mozart'ın cevabına göre, .NET Core 3+ kullanıyorsanız Microsoft.Data.SqlClientbunun yerine referans alın .


6
Sadece eklemek zorunda System.Data.SqlClientyoluyla Nugetve çalışır Dapperiçinde .NET Core 1.1.
Tadej

2
Nuget aracılığıyla system.data.sqlclient ekledim ve çalışıyor
Shahram

1
Bu düzeltilmiş görünüyor .NET Core 2.0. En azından benim için.
Tadej

Yapılandırma dosyasını düzenlemek yerine arabirim kullandım: Çözüm Gezgini, NuGet ... 'de Bağımlılıklar üzerinde sağ tıklandı.
Evgeny Nozdrev

Bu paketi Nuget veya dotnet add paketi ile eklerken sorun yaşadım. Bir çözüm, bağımlılığı doğrudan proje dosyasına koymak ve bir geri yükleme - dotnet geri yüklemesi gerçekleştirmekti. Nuget.config dosyası, packageSources bölümünde nuget.org'u içermelidir.
user2809176

69

Dot Net Core 3 için Microsoft.Data.SqlClient kullanılmalıdır.


9
Bu yorum, .NET Core 2.2'den .NET Core 3.0'a geçiş yapan herkes için hayat kurtarıcıdır. System.Data.SqlClient'ten Microsoft.Data.SqlClient'e tüm başvuruları değiştirin.
Admir Tuzović

@mozart, .Net Core 2.2 Microsoft.Data.SqlClient kullanabilir mi? veya Microsoft.Data.SqlClient yalnızca .net Core 3 için mi kullanılır?
Daleman

@Daleman Bu sorunu .Net Core 3'e geçerken çözdüm bu yüzden 2.2 ile denemedim, "Her parametrenin bir Veri tipi var mı?" Diye çalıştığını düşünmüyorum, ama deneyebilirsiniz.
Mozart Al Khateeb

@Mozar ve veritabanına bağlantınız hala stringbuilder kullanıyor mu?
Daleman

@Daleman SqlConnectionStringBuilder'ı kastettiyseniz, evet bu NuGget'te mevcuttur.
Mozart Al Khateeb

3

Bunu deneyin projectname.csproj dosyanızı açın, benim için çalışmasını.

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

Bu Referans " ItemGroup " etiketini içine eklemeniz gerekir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.