この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 22846|答える: 0

[.NET Core] 【実戦】ASP.NET コアのエンティティフレームワークコア入門チュートリアル

[リンクをコピー]
掲載地 2019/05/06 15:38:54 | | | |
Entity Framework(EF)コアは、人気のあるEntity Frameworkデータアクセス技術の軽量で拡張性のあるオープンソースかつクロスプラットフォーム対応のバージョンです。

EF Coreはオブジェクトリレーショナルマッパー(O/RM)として利用できるため、.NET開発者は.NETオブジェクトを持つデータベースを扱い、データアクセスコードを頻繁に書く必要がなくなります。

データベースプロバイダー:ハイパーリンクのログインが見えます。

この記事で使用されている環境:

  • オープンツールズ:VS 2017
  • dotnetバージョン:2.1.301
  • データベース:SQL Sever 2012


プロジェクトを作成してください



1: BaiDuPan.WebUIはコアウェブアプリケーションを作成するための ASP.NET です。



2: BaiDuPan.DomainModelはクラスライブラリ(.NET Core)を作成すること;

エンティティフレームワークのコアリファレンスを追加する

vs2017で開発されました。 NET Frameworkプロジェクトでは、ef 6を追加する際に、下の図のようにプロジェクトを右クリックして直接追加できます。



ただし、上記の方法でEFコアを追加することはできません。

PMコマンド:


上記の命令により、プログラムは必要な依存関係パッケージを自動的に追加しますしたがって、Microsoft.EntityFrameworkCoreパッケージを追加する必要はありません。

コンテキストモデルとエンティティモデルの追加

映画モデル:


PanDbデータベースの背景:

データベースコンテキスト依存注入(ここでWebUIにDomainModel参照を追加する必要があります):


上記のコードはプロジェクトがMicrosoft.EntityFrameworkCore.SqlServerを参照することを要求していますが、BaiDuPan.WebUIはMicrosoft.EntityFrameworkCore.SqlServerを参照する必要がないのに、なぜエラーとして報告されないのでしょうか?

Microsoft.AspNetCore.App パッケージには、ASP.NET Core 2.1以降およびEntity Framework Core 2.1以降のすべての機能が含まれています。 Core 2.1以降のデフォルトプロジェクトテンプレート ASP.NET このパッケージを使用しています。 Microsoft.AspNetCore.App パッケージは、Core 2.1以降のアプリケーション ASP.NET Entity Framework Core 2.1以降のアプリケーションに推奨されています。


appsettings.json データベース接続文字列の設定:


次のエラーでプロジェクトを始めてみてください:

エラー NU1107 は Microsoft.EntityFrameworkCore でバージョンの競合を検出します。 プロジェクトからパッケージを直接参照することで、この問題は解決します。
BaiDuPan.WebUI -> BaiDuPan.DomainModel -> Microsoft.EntityFrameworkCore.SqlServer 2.2.4 -> Microsoft.EntityFrameworkCore.Relational 2.2.4 -> Microsoft.EntityFrameworkCore (>= 2.2.4)
BaiDuPan.WebUI -> Microsoft.AspNetCore.App 2.1.1 -> Microsoft.EntityFrameworkCore (>= 2.1.1 && < 2.2.0).        BaiDuPan.WebUI C:\Users\itsvse_pc\Source\Repos\baidupan\BaiDuPan.WebUI\BaiDuPan.WebUI\BaiDuPan.WebUI.csproj 1       

その理由は、2つのプロジェクト間でバージョンの衝突があるからです。BaiDuPan.WebUIにef coreの高バージョンをインストールしてみてください。新しいエラーは以下の通りです:

PM> install-package Microsoft.EntityFrameworkCore.SqlServer -version 2.2.4
  取得https://api.nuget.org/v3/registr ... qlserver/index.json
  キャッシュhttps://api.nuget.org/v3/registr ... qlserver/index.json
C:\Users\itsvse_pc\Source\Repos\baidupan\BaiDuPan.WebUI\BaiDuPan.WebUI.csprojのパッケージを元に戻す...
NU1608: 检测到的包版本在依赖项约束之外: Microsoft.AspNetCore.App 2.1.1 需要 Microsoft.EntityFrameworkCore.SqlServer (>= 2.1.1 && < 2.2.0),但版本 Microsoft.EntityFrameworkCore.SqlServer 2.2.4 已解决。
Install-Package: NU1107: Microsoft.EntityFrameworkCoreでバージョンの衝突が検出されました。 プロジェクトからパッケージを直接参照することで、この問題は解決します。
BaiDuPan.WebUI -> Microsoft.EntityFrameworkCore.SqlServer 2.2.4 -> Microsoft.EntityFrameworkCore.Relational 2.2.4 -> Microsoft.EntityFrameworkCore (>= 2.2.4)
BaiDuPan.WebUI -> Microsoft.AspNetCore.App 2.1.1 -> Microsoft.EntityFrameworkCore (>= 2.1.1 && < 2.2.0).
ロケーションライン:1 キャラクター:1
+ install-package Microsoft.EntityFrameworkCore.SqlServer -version 2.2. ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + カテゴリ情報 : NotSpecified: (:) [インストールパッケージ]、例外
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand

Install-Package: パッケージ復元に失敗しました。 「BaiDuPan.WebUI」のパッケージ変更をロールバックしています。
ロケーションライン:1 キャラクター:1
+ install-package Microsoft.EntityFrameworkCore.SqlServer -version 2.2. ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + カテゴリ情報 : NotSpecified: (:) [インストールパッケージ]、例外
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand

上映時間:00:00:01.4208784
PM>



どうしたらいい? 解は以下の通りです:

ダウングレードすると、BaiDuPan.WebUIプロジェクトはMicrosoft.EntityFrameworkCore 2.1.1を参照しているため、BaiDuPan.DomainModelプロジェクトでnugetコマンドを再実行します。

これにより、すべてのプロジェクトが同じEF Coreバージョンであることを保証します。

データベースの初期化

データベースとテーブルは以下の画像のように正常に作成されています:



MovieControllerコントローラーを追加してください

コードは以下の通りです:

インデックスメソッドはデータベースのムービーテーブル内のすべてのデータをクエリし、作成メソッドは新しいデータを追加する方法です。ポストマンでデータを追加してリクエストしてみましょう。下図のように:

ハイパーリンクのログインが見えます。投稿リクエスト


プログラムはスムーズに実行でき、例外は一切出さず、挿入が成功したこと、そしてアクセスが試みられたことが証明されました。ハイパーリンクのログインが見えます。下図のようにすべてのデータをクエリします:



修正や削除については言うまでもありません!

リソース:

エンティティフレームワークコア:ハイパーリンクのログインが見えます。

ASP.NET コア:ハイパーリンクのログインが見えます。

(終わり)


スコア

参加者数1MB+1 貢献する+1 倒れる 理由
管理者 + 1 + 1 とても強力です!

すべての評価を見る





先の:マスターはいますか?
次に:コンマ分離文字列法
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com