ASP.NET Core에서 SqlClient를 사용하는 방법?


82

ASP.net Core에서 SQLClient 라이브러리를 사용하려고하지만 작동하지 않는 것 같습니다. 이 기사는 온라인에서 설정 방법을 조언하지만 저에게 적합하지 않습니다. http://blog.developers.ba/using-classic-ado-net-in-asp-net-vnext/

간단한 콘솔 응용 프로그램 패키지가 있습니다. 내 project.json은 다음과 같습니다.

{
  "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에 대한 참조가 없습니다. 하나 추가해 보셨습니까?
— thorkia

1
또한 UPDATE, INSERT or DELETESQL에서 명령을 수행하지 않으므로 데이터베이스에서 데이터를 반환 command.ExecuteNonQuery();하는 Fill()메서드를 사용 하여 조회를 사용 하거나 단일 행만 반환하는 경우 ExecuteScalar 메서드를 사용하는 이유는 무엇입니까 ? 또한에 대한 참조를 using section in the .cs file class header추가 할뿐만 아니라 reference프로젝트 의 노드에 수동으로 추가해야합니다
— MethodMan

1
오류는 DNX 4.5.1에 ​​대한 적절한 참조를 추가하지 않았 음을 나타냅니다. 동시에 두 가지 프로젝트 유형을 구축하고 있습니다. DNX.4.5.1이 마음에 들지 않으면 구성에서 제거하면 빌드됩니다.
— mason

1
여러분 모두 감사합니다! DNX 4.5.1 섹션을 제거하고 System.Runtime의 종속성을 설정에 추가했으며 완벽하게 작동했습니다 (모두 Visual Studio를 다시 시작한 후입니다!). 다시 한 번 감사드립니다 !!!
— Rob McCabe

답변:


162

튜토리얼에서이 부분을 놓친 것 같습니다.

System.Data 및 System.Data.SqlClient를 참조하는 대신 Nuget에서 가져와야합니다.

System.Data.Common 및 System.Data.SqlClient.

현재 이것은 project.json –> aspnetcore50 섹션에이 두 라이브러리에 대한 종속성을 생성합니다.

"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을 통해 System.Data.Common 및 System.Data.SqlClient 를 가져오고 이것이 위의 종속성을 추가하는지 확인하십시오.하지만 간단히 말해 System.Runtime 이 누락되었습니다 .

편집 : Mozarts 답변에 따라 .NET Core 3 이상을 사용하는 경우 Microsoft.Data.SqlClient대신 참조하십시오 .


6
System.Data.SqlClient비아 를 추가 Nuget하기 만하면 Dapper되며 .NET Core 1.1.
— 타데

2
난 그냥 Nuget를 통해의 System.Data.SQLClient을 추가하고 그것을 작동
— 샤 흐람

1
이것은 .NET Core 2.0. 적어도 나를 위해.
— Tadej

구성 파일을 편집하는 대신 인터페이스를 사용했습니다. 솔루션 탐색기에서 종속성을 마우스 오른쪽 단추로 클릭하고 NuGet ....
— Evgeny Nozdrev

Nuget 또는 dotnet 추가 패키지로이 패키지를 추가하는 데 문제가 있습니다. 해결책은 프로젝트 파일에 대한 종속성을 크게두고 복원 (dotnet 복원)을 수행하는 것이 었습니다. Nuget.config 파일은 packageSources 섹션에 nuget.org를 포함해야합니다.
— user2809176

65

Dot Net Core 3의 경우 Microsoft.Data.SqlClient를 사용해야합니다.


8
이 설명은 .NET Core 2.2에서 .NET Core 3.0으로 마이그레이션하는 모든 사용자에게 생명의 은인입니다. System.Data.SqlClient의 모든 참조를 Microsoft.Data.SqlClient로 바꿉니다.
— Admir Tuzović 19

@mozart, .Net Core 2.2는 Microsoft.Data.SqlClient를 사용할 수 있습니까? 또는 Microsoft.Data.SqlClient는 .net Core 3에만 사용됩니까?
— Daleman

@Daleman .Net Core 3로 이동하는 동안이 문제를 해결 했으므로 2.2로 시도하지 않았으므로 "각 매개 변수에 데이터 유형이 맞습니까?"작동하지 않는다고 생각하지만 시도해 볼 수 있습니다.
— Mozart Al Khateeb

@Mozar, 그리고 여전히 stringbuilder를 사용하는 데이터베이스에 대한 연결?
— Daleman

@Daleman SqlConnectionStringBuilder를 의미했다면이 NuGget에서 사용할 수 있습니다.
— Mozart Al Khateeb

3

이것을 시도해보십시오 projectname.csproj 파일을 열어 주세요.

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

이 Reference " ItemGroup "태그를 내부 에 추가해야합니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.