Entity Framework (EF) Core adalah versi teknologi akses data Entity Framework yang populer, mudah diperluas, sumber terbuka, dan lintas platform.
EF Core dapat digunakan sebagai pemetaan relasional objek (O/RM) sehingga pengembang .NET dapat bekerja dengan database dengan objek .NET sehingga mereka tidak perlu sering menulis sebagian besar kode akses data.
Penyedia Basis Data:Login hyperlink terlihat.
Lingkungan yang digunakan dalam artikel ini:
- Alat Terbuka: VS 2017
- Versi dotnet: 2.1.301
- Basis data: SQL Sever 2012
Membuat proyek
1: BaiDuPan.WebUI adalah ASP.NET untuk membuat aplikasi web Core;
2: BaiDuPan.DomainModel adalah untuk membuat perpustakaan kelas (.NET Core);
Menambahkan referensi Entity Framework Core
Dikembangkan dengan vs2017. NET Framework project, saat menambahkan ef 6, Anda dapat langsung menambahkannya dengan mengklik kanan pada project, seperti yang ditunjukkan pada gambar di bawah ini:
Namun, inti EF tidak dapat ditambahkan dengan cara di atas.
Perintah PM:
Dengan urutan di atas,Program ini secara otomatis menambahkan paket dependensi yang diperlukanJadi, tidak perlu menambahkan paket Microsoft.EntityFrameworkCore.
Menambahkan model konteks dan entitas
Model Film:
Konteks database PanDb:
Startup, yang menambahkan injeksi dependensi konteks database (Di sini Anda perlu menambahkan referensi DomainModel ke WebUI):
Kode di atas mengharuskan proyek untuk mereferensikan Microsoft.EntityFrameworkCore.SqlServer, tetapi BaiDuPan.WebUI tidak perlu mereferensikan Microsoft.EntityFrameworkCore.SqlServer, mengapa tidak dilaporkan kesalahan?
Paket Microsoft.AspNetCore.App mencakup semua fitur ASP.NET Core 2.1 dan yang lebih baru serta Entity Framework Core 2.1 dan yang lebih baru. Templat proyek default untuk ASP.NET Core 2.1 dan yang lebih baru menggunakan paket ini. Paket Microsoft.AspNetCore.App direkomendasikan untuk aplikasi dengan ASP.NET Core 2.1 dan yang lebih baru dan Entity Framework Core 2.1 dan yang lebih baru.
appsettings.json Mengonfigurasi string koneksi database:
Coba mulai proyek dengan kesalahan berikut:
Kesalahan NU1107 mendeteksi konflik versi di Microsoft.EntityFrameworkCore. Mereferensikan paket langsung dari proyek memecahkan masalah ini. 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.WebUI.csproj 1 Pasalnya, ada konflik versi antara kedua proyek tersebut, coba instal ef core versi yang lebih tinggi di BaiDuPan.WebUI, kesalahan barunya adalah sebagai berikut:
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -Versi 2.2.4 DAPATKANhttps://api.nuget.org/v3/registr ... qlserver/index.json CACHEhttps://api.nuget.org/v3/registr ... qlserver/index.json Mengembalikan paket C:\Users\itsvse_pc\Source\Repos\baidupan\BaiDuPan.WebUI\BaiDuPan.WebUI.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: Konflik versi terdeteksi di Microsoft.EntityFrameworkCore. Mereferensikan paket langsung dari proyek memecahkan masalah ini. 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). Garis Lokasi: 1 Karakter: 1 + Instal-Paket Microsoft.EntityFrameworkCore.SqlServer -Versi 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Install-Package], Pengecualian + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Install-Package: Pemulihan paket gagal. Memutar kembali perubahan paket untuk "BaiDuPan.WebUI". Garis Lokasi: 1 Karakter: 1 + Instal-Paket Microsoft.EntityFrameworkCore.SqlServer -Versi 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Install-Package], Pengecualian + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Waktu Apred: 00:00:01.4208784 PM>
Apa yang harus dilakukan? Solusinya adalah sebagai berikut:
Downgrade, proyek BaiDuPan.WebUI mereferensikan Microsoft.EntityFrameworkCore 2.1.1, jadi kami menjalankan kembali perintah nuget dalam proyek BaiDuPan.DomainModel, sebagai berikut:
Dengan cara ini, kami menjamin bahwa semua proyek memiliki versi EF Core yang sama.
Menginisialisasi database
Database dan tabel berhasil dibuat seperti yang ditunjukkan pada gambar berikut:
Menambahkan pengontrol MovieController
Kodenya adalah sebagai berikut:
Metode Index adalah untuk mengkueri semua data dalam tabel Film database, dan metode Create adalah untuk menambahkan data baru, mari kita coba tambahkan sepotong data dan memintanya dengan tukang pos, seperti yang ditunjukkan pada gambar di bawah ini:
Login hyperlink terlihat.Permintaan POST
Program ini dapat dijalankan dengan lancar, tidak ada pengecualian yang dilemparkan, membuktikan bahwa penyisipan berhasil, dan akses dicoba:Login hyperlink terlihat.Kueri semua data seperti yang ditunjukkan pada gambar di bawah ini:
Adapun modifikasi dan penghapusan, tak perlu dikatakan lagi!
Sumber daya:
Inti Kerangka Entitas:Login hyperlink terlihat.
ASP.NET Inti:Login hyperlink terlihat.
(Akhir)
|