Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 22846|Yanıt: 0

[.NET Core] 【Practical Combat】ASP.NET Core's Entity Framework Core giriş tutorial

[Bağlantıyı kopyala]
Yayınlandı 6.05.2019 15:38:54 | | | |
Entity Framework (EF) Core, popüler Entity Framework veri erişim teknolojisinin hafif, genişletilebilir, açık kaynaklı ve çapraz platform bir versiyonudur.

EF Core, .NET geliştiricilerinin .NET nesneleri olan veritabanlarıyla çalışabilmesi için nesne-ilişkisel eşleyici (O/RM) olarak kullanılabilir; böylece veri erişim kodlarının çoğunu sık yazmak zorunda kalmazlar.

Veritabanı Sağlayıcısı:Bağlantı girişi görünür.

Bu makalede kullanılan ortam:

  • Açık Araçlar: VS 2017
  • dotNet Version: 2.1.301
  • Veritabanı: SQL Sever 2012


Bir proje oluşturun



1: BaiDuPan.WebUI, Core web uygulaması oluşturmak için bir ASP.NET;



2: BaiDuPan.DomainModel, bir sınıf kütüphanesi (.NET Core) oluşturmaktır;

Bir Entity Framework Core referansı ekleyin

vs2017 ile geliştirildi. NET Framework projesi, ef 6 eklerken, aşağıdaki şekilde gösterildiği gibi projeye sağ tıklayarak doğrudan ekleyebilirsiniz:



Ancak, EF çekirdekleri yukarıdaki şekilde eklenemez.

PM komutu:


Yukarıdaki sırayla,Program, gerekli bağımlılık paketlerini otomatik olarak eklerBu yüzden Microsoft.EntityFrameworkCore paketini eklemeye gerek yok.

Bağlam ve varlık modelleri ekleyin

Film Modelleri:


PanDb veritabanı bağlamı:

Veritabanı bağlamı bağımlılığı enjeksiyonu ekleyen startup sınıfı (Burada WebUI'ye bir DomainModel referansı eklemeniz gerekir):


Yukarıdaki kod projenin Microsoft.EntityFrameworkCore.SqlServer adresine başvurmasını gerektirir, ancak BaiDuPan.WebUI'nin Microsoft.EntityFrameworkCore.SqlServer adresine başvurması gerekmez, neden hata bildirilmiyor?

Microsoft.AspNetCore.App paket, ASP.NET Core 2.1 ve sonrasının ve Entity Framework Core 2.1 ve sonrasının tüm özelliklerini içerir. ASP.NET Core 2.1 ve sonrasında varsayılan proje şablonları bu paketi kullanır. Microsoft.AspNetCore.App paketler, ASP.NET Core 2.1 ve üzeri ile Entity Framework Core 2.1 ve üzeri uygulamalar için önerilir.


appsettings.json Veritabanı bağlantı dizisini yapılandırmak:


Projeye aşağıdaki hatayla başlamayı deneyin:

NU1107 hatası, Microsoft.EntityFrameworkCore içinde bir sürüm çakışmasını tespit ediyor. Pakete doğrudan projeden referans vermek bu sorunu çözer.
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.csproj 1       

Sebebi, iki proje arasında bir sürüm çakışması olması, BaiDuPan.WebUI'de daha yüksek bir ef core sürümü yüklemeye çalışın, yeni hata şu şekildedir:

PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2.4
  ALhttps://api.nuget.org/v3/registr ... qlserver/index.json
  CACHEhttps://api.nuget.org/v3/registr ... qlserver/index.json
C:\Users\itsvse_pc\Source\Repos\baidupan\BaiDuPan.WebUI\BaiDuPan.WebUI.csproj paketini geri alıyoruz...
NU1608: 检测到的包版本在依赖项约束之外: Microsoft.AspNetCore.App 2.1.1 需要 Microsoft.EntityFrameworkCore.SqlServer (>= 2.1.1 && < 2.2.0),但版本 Microsoft.EntityFrameworkCore.SqlServer 2.2.4 已解决。
Kurulum Paketi: NU1107: Microsoft.EntityFrameworkCore içinde sürüm çakışması tespit edildi. Pakete doğrudan projeden referans vermek bu sorunu çözer.
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).
Konum Satırı: 1 Karakterler: 1
+ Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2. ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified : (:) [Kurulum-Paket], İstisna
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand

Kurulum-Paket: Paket geri yükleme başarısız oldu. "BaiDuPan.WebUI" için paket değişikliklerini geri alıyoruz.
Konum Satırı: 1 Karakterler: 1
+ Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2. ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified : (:) [Kurulum-Paket], İstisna
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand

Kayıt Süresi: 00:00:01.4208784
PM>



Ne yapmalı? Çözüm şöyledir:

Aşağı seviyede, BaiDuPan.WebUI projesi Microsoft.EntityFrameworkCore 2.1.1'e referans veriyor, bu yüzden BaiDuPan.DomainModel projesinde nuget komutunu aşağıdaki gibi yeniden çalıştırıyoruz:

Bu şekilde, tüm projelerin aynı EF Core versiyonuna sahip olmasını garanti ederiz.

Veritabanını başlatın

Veritabanı ve tablo, aşağıdaki görselde gösterildiği gibi başarıyla oluşturulmuştur:



MovieController kontrolcüsü ekleyin

Kod şöyledir:

İndeks yöntemi, veritabanı Film tablosundaki tüm verileri sorgulamak, Create yöntemi ise yeni veri eklemek, bir veri parçası ekleyip postacı ile talep etmeyi deneyelim, aşağıdaki şekilde gösterildiği gibi:

Bağlantı girişi görünür.POST talebi


Program sorunsuz çalışabildi, hiçbir istisna yapılmadı, bu da eklemenin başarılı olduğunu kanıtladı ve erişim denendi:Bağlantı girişi görünür.Tüm verileri aşağıdaki şekilde sorgulayın:



Değişiklikler ve silme konusuna gelince, söylemeye gerek yok!

Kaynaklar:

Varlık Çerçeve Çekirdeği:Bağlantı girişi görünür.

ASP.NET Çekirdek:Bağlantı girişi görünür.

(Son)


Puan

Katılımcı sayısı1MB+1 Katkı+1 Çökmek sebep
Admin + 1 + 1 Çok güçlü!

Tüm puanları gör





Önceki:Yüksek lisans var mı?
Önümüzdeki:Virgül ayırma dizisi yöntemi
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com