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.