データベースの最初のエラーEntity Framework .NETコア

asp.net-core c# entity-framework-core

質問

古いクラスライブラリをクラスライブラリパッケージに変換しています。このクラスライブラリは古いプロジェクトのDALレイヤーです。最新の.NETにアップグレードします。

古いクラスライブラリでは、 edmxファイルをデータベース用に使用してedmxます。新しい.NETでは、edmxのサポートは停止しましたが、データベースからモデルを生成する必要があります。データベースはすでに配置されているためです。

このため、私はこのリンクで提供されている手順に従っていますhttps : //docs.efproject.net/en/latest/platforms/aspnetcore/existing-db.html

だから、私がやったことは新しいクラスライブラリパッケージが作られたことです:

ここに画像の説明を入力

そしてproject.jsonはこれです:

{
  "version": "1.0.0-*",
  "description": "xPT.DAL Class Library",
  "authors": [ "Dawood" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",
  "frameworks": {
    "net46": {
      "dependencies": {
        "Microsoft.CSharp": "4.0.1",
        "System.Collections": "4.0.11",
        "System.Linq": "4.1.0",
        "System.Runtime": "4.1.0",
        "System.Threading": "4.0.11"
      }
    }
  },
  "dependencies": {

  }
}

今すぐ私がインストール: Microsoft.EntityFrameworkCore.SqlServerは、上記のリンクで述べたように、私はこのエラーが発生します:

このコマンドを使用しInstall-Package Microsoft.EntityFrameworkCore.SqlServer

ここに画像の説明を入力

エラーリスト:

ここに画像の説明を入力

それはここに言う:

The dependency Microsoft.Extensions.Caching.Abstractions 1.0.0 in project xPT.DAL does not support framework .NETFramework,Version=v4.6

しかし、ドキュメントによると、このライブラリは4.5.1以上でサポートされるはずです: https : //docs.efproject.net/en/latest/providers/sql-server/index.html#supported-platforms

私は間違って何をしていますか?

受け入れられた回答

さて、.NET Framework Webアプリケーションを使用して、 Class Project (.NET Core)でデータベースの作業を開始するための手順を投稿しています。

ステップ1 - .NETコアをインストールする

.NETコアではないDNXを使用して(Hint: You should be able to see the .NET Core option when creating a New Project) - ここからダウンロードしない場合

.NET Coreをインストールする際に問題がある場合(Visual Studio 2015 Update 3が正しくインストールされていないなどのエラー) - [ DotNetCore.1.0.0-VS2015Tools.Preview2.exe SKIP_VSU_CHECK=1 ]コマンドを使用してインストールを実行できます。 Visual StudioチェックのGithub問題を実行するインストールを妨げるもの

ここに画像の説明を入力

ステップ2 - プロジェクトを作成する

新しいASP.NETコアWebアプリケーションを作成 - >次の画面でWebアプリケーションを選択

ここに画像の説明を入力

Class Library (.NET Core)プロジェクトを追加する

ここに画像の説明を入力

ステップ3 - EFパッケージのインストール

クラスライブラリのproject.jsonファイルを開き、次のファイルを保存して、ファイルを保存します。

{
  "version": "1.0.0-*",

  "dependencies": {
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
    "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "NETStandard.Library": "1.6.0"
  },
  "tools": {
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "net46": {
    },
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.0-*"
        }
      }
    }
  }
}

これはReferences下のパッケージを復元するはずです

ここに画像の説明を入力

---------------- OR

Nuget Package Managerを使用してインストールするには、パッケージマネージャコンソールで次のコマンドを実行します

Install-Package Microsoft.EntityFrameworkCore.SqlServer

Install-Package Microsoft.EntityFrameworkCore.Tools –Pre

Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design

注:一度に1つのパッケージをインストールしてください - インストール後にエラーが発生した場合

Microsoft.EntityFrameworkCore.Tools

次に、 project.jsonフレームワークセクションの内容をこれに変更します。

  "frameworks": {
    "net46": {
    },
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.0-*"
        }
      }
    }
  }

ステップ4 - データベースモデルの作成

データベースを生成するには、 Package Manager Consoleで次のコマンドを実行します(接続文字列をデータベースに変更することを忘れないでください)

Scaffold-DbContext "Server=. ; Database=DATABASE; user id= USER ; password = PASSWORD;" Microsoft.EntityFrameworkCore.SqlServer

これにより、スタートアッププロジェクトに関するエラーが表示されます。

ここに画像の説明を入力

このためには、クラスライブラリに追加したのと同じ参照を.NET Web Appに追加する必要があります

そのため、Webアプリケーション用のproject.jsonを開き、

dependencies下で、以下を追加してください:

"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",

tools下に追加:

"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",

変更後ファイルを保存します。

これは私のproject.jsonのようなものです

ここに画像の説明を入力

次に、パッケージマネージャコンソールでクラスライブラリに対してコマンドを再度実行します。

クラスライブラリの参照をWebアプリケーションにまだ追加していない場合は、次のエラーが発生します。

ここに画像の説明を入力

この問題を解決するには、クラスライブラリの参照をWebアプリケーションに追加します。

ここに画像の説明を入力

最後に

コマンドを再度実行する - Package Manager Console次の操作を実行します。

Scaffold-DbContext "Server=. ; Database=DATABASE; user id= USER ; password = PASSWORD;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

これはモデルフォルダの下のエンティティをクラスライブラリに作成する必要があります

ここに画像の説明を入力


人気のある回答

更新
まだDNXを使用しているようです。 DNXはサポートされなくなったため、.NET Core(.NET CLIと共に)にアップグレードしてください。 .NET Coreはこちらからダウンロードできます。


net46は、デスクトップ.N​​ETフレームワーク4.6用のTarget Framework Moniker(TMF)です。 Microsoft.CSharpSystem.Collectionsなどのパッケージは、デフォルトでフル.NETフレームワークの一部であるため、そのフレームワークで参照する必要はありません。 netstandard1.6などの.NET Standardバージョンをターゲットにする場合にのみ必要netstandard1.6

あなたは下にリストされているすべてのdepdendencies削除net46

{
  "dependencies": {
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0"
  },

  "frameworks": {
    "net46": {}
  }
}


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ