ASP.NET CoreでSqlClientを使用する方法は?


83

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 2016

1
またUPDATE, INSERT or DELETE、SQLでコマンドを実行していないので、データベースからデータを返すメソッドまたは1行のみを返す場合はExecuteScalarメソッドを使用してcommand.ExecuteNonQuery();ルックアップを使用するのはなぜですかFill()。参照を追加するだけでなく、プロジェクト内のノードにusing section in the .cs file class header手動で追加する必要もありreferenceます
MethodMan 2016

1
エラーは、DNX4.5.1の適切な参照を追加していないことを示しています。2つのプロジェクトタイプを同時に構築しています。DNX.4.5.1を気にしない場合は、構成から削除するとビルドされます。
メイソン

1
みんな-どうもありがとう!DNX 4.5.1セクションを削除し、System.Runtimeの依存関係を設定に追加すると、完全に機能しました(Visual Studioの再起動後もすべてです!)。再度、感謝します!!!
ロブマッケイブ2016

回答:


163

チュートリアルでこの部分を見逃したかもしれないと思います:

System.DataとSystem.Data.SqlClientを参照する代わりに、Nugetから取得する必要があります。

System.Data.CommonおよびSystem.Data.SqlClient。

現在、これにより、project.json –> aspnetcore50セクションにこれら2つのライブラリへの依存関係が作成されます。

"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
タデイ2017

2
Nugetを介してsystem.data.sqlclientを追加したところ、機能します
Shahram

1
これはで修正されているよう.NET Core 2.0です。少なくとも私にとっては。
タデイ2017年

構成ファイルを編集する代わりにインターフェイスを使用しました。ソリューションエクスプローラーの[依存関係]、NuGet ...を右クリックしました。
Evgeny Nozdrev 2018

Nugetまたはdotnetaddパッケージでこのパッケージを追加する際に問題が発生しました。解決策は、依存関係をプロジェクトファイルに直接配置し、復元(dotnet restore)を実行することでした。Nuget.configファイルでは、packageSourcesセクションにnuget.orgが含まれている必要があります。
user28091 7619年

69

Dot Net Core 3の場合、Microsoft.Data.SqlClientを使用する必要があります。


9
このコメントは、.NET Core2.2から.NETCore3.0に移行するすべての人にとって命の恩人です。System.Data.SqlClientからMicrosoft.Data.SqlClientへのすべての参照を置き換えます。
AdmirTuzović

@ mozart、.Net Core 2.2はMicrosoft.Data.SqlClientを使用できますか?またはMicrosoft.Data.SqlClientは.netCore 3にのみ使用されますか?
デールマン

@Daleman .Net Core 3に移行するときにこの問題を解決したので、2.2で試していません。「各パラメーターのデータ型は正しいですか?」とは思えませんが、試してみることができます。
モーツァルトアルハティーブ

@Mozar、そしてデータベースへの接続はまだstringbuilderを使用していますか?
デールマン

@Daleman SqlConnectionStringBuilderを意味する場合は、はい、このNuGgetで使用できます。
モーツァルトアルハティーブ

3

これを試してみてくださいあなたのprojectname.csprojファイルを開いてください。

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

この参照「ItemGroup」タグを内部に追加する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.