Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Note
Bu, bu makalenin en son sürümü değildir. Geçerli sürüm için bu makalenin .NET 10 sürümüne bakın.
Warning
ASP.NET Core'un bu sürümü artık desteklenmiyor. Daha fazla bilgi için bkz . .NET ve .NET Core Destek İlkesi. Geçerli sürüm için bu makalenin .NET 9 sürümüne bakın.
Bu öğreticide, bir veritabanındaki filmleri yönetmek için sınıflar eklenir. Uygulamanın model sınıfları, veritabanıyla çalışmak için Entity Framework Core (EF Core) kullanır. EF Core , veri erişimini basitleştiren bir nesne ilişkisel eşleyicidir (O/RM). Önce model sınıflarını yazar ve EF Core veritabanını oluşturur.
Model sınıfları, üzerinde bağımlılıkları olmadığından POCO sınıfları ("P) olarak bilinir. Veritabanında depolanan verilerin özelliklerini tanımlar.
Veri modeli ekleme
Çözüm Gezgini'da RazorPagesMovie projesiNeni Klasör Ekle'ye> sağ tıklayın. klasörünü
Modelsadlandırın.Klasöre
Modelssağ tıklayın. Sınıf>. Sınıfa Movie adını verin.Sınıfına aşağıdaki özellikleri
Movieekleyin:using System.ComponentModel.DataAnnotations; namespace RazorPagesMovie.Models; public class Movie { public int Id { get; set; } public string? Title { get; set; } [DataType(DataType.Date)] public DateTime ReleaseDate { get; set; } public string? Genre { get; set; } public decimal Price { get; set; } }
sınıfı aşağıdakileri Movie içerir:
Bu
IDalan, birincil anahtar için veritabanı tarafından gereklidir.-
- Kullanıcının tarih alanına saat bilgilerini girmesi gerekmez.
- Zaman bilgisi değil, yalnızca tarih görüntülenir.
Sonrasındaki soru işareti
stringözelliğin null atanabilir olduğunu gösterir. Daha fazla bilgi için bkz . Null atanabilir başvuru türleri.
DataAnnotations , sonraki bir öğreticide ele alınmıştır.
Derleme hatası olmadığını doğrulamak için projeyi derleyin.
Film modelinin iskelesini oluşturma
Bu bölümde, film modeli iskelesi oluşturulmuş. Diğer bir ifadeyle, iskele aracı film modeli için Oluşturma, Okuma, Güncelleştirme ve Silme (CRUD) işlemleri için sayfalar oluşturur.
Sayfalar/Filmler klasörünü oluşturun:
- Sayfalar klasörüne Yeni Klasör>>sağ tıklayın.
- Klasöre Filmler adını verin.
Sayfalar/Filmler klasörünesağ tıklayın.>
Yeni İskele Ekle iletişim kutusunda Entity Framework (CRUD)Razor
Razor kullanarak Sayfa Ekle iletişim kutusunu tamamlayın:
- Model sınıfı açılan listesinde Film (RazorPagesMovie.Models) öğesini seçin.
-
Veri bağlamı sınıf satırında (artı) işaretini seçin + .
- Veri Bağlamı Ekle iletişim kutusunda sınıf adı
RazorPagesMovie.Data.RazorPagesMovieContextoluşturulur. - Veritabanı sağlayıcısı açılan listesinde SQL Server'ı seçin.
- Veri Bağlamı Ekle iletişim kutusunda sınıf adı
- Add (Ekle) seçeneğini belirleyin.
Dosyaappsettings.json, yerel veritabanına bağlanmak için kullanılan bağlantı dizesi güncelleştirilir.
Warning
Bu makalede, kullanıcının kimliğinin doğrulanması gerekmeyen bir yerel veritabanı kullanılır. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Dağıtılan test ve üretim uygulamaları için kimlik doğrulaması hakkında daha fazla bilgi için bkz . Güvenli kimlik doğrulama akışları.
Oluşturulan ve güncelleştirilen dosyalar
İskele işlemi aşağıdaki dosyaları oluşturur:
- Sayfalar/Filmler: Oluşturma, Silme, Ayrıntılar, Düzenleme ve Dizin oluşturma.
Data/RazorPagesMovieContext.cs
Oluşturulan dosyalar sonraki öğreticide açıklanmıştır.
İskele işlemi dosyaya aşağıdaki vurgulanmış kodu Program.cs ekler:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.MapStaticAssets();
app.MapRazorPages();
app.Run();
Değişiklikler Program.cs bu öğreticinin ilerleyen bölümlerinde açıklanmıştır.
EF'nin geçiş özelliğini kullanarak ilk veritabanı şemasını oluşturma
Entity Framework Core'daki geçişler özelliği şunları yapmak için bir yol sağlar:
- İlk veritabanı şemasını oluşturun.
- Veritabanı şemasını uygulamanın veri modeliyle eşitlenmiş durumda tutmak için artımlı olarak güncelleştirin. Veritabanındaki mevcut veriler korunur.
Bu bölümde, Paket Yöneticisi Konsolu (PMC) penceresi şunları yapmak için kullanılır:
İlk geçişi ekleyin.
Veritabanını ilk geçişle güncelleştirin.
Araçlar menüsünde NuGet Paket Yöneticisi
PMC'de aşağıdaki komutu girin:
Add-Migration InitialCreatekomutu,
Add-Migrationilk veritabanı şemasını oluşturmak için kod oluşturur. Şema, içindeDbContextbelirtilen modeli temel alır. bağımsızInitialCreatedeğişkeni geçişi adlandırmak için kullanılır. Herhangi bir ad kullanılabilir, ancak kurala göre geçişi açıklayan bir ad seçilir.
Sonraki bir adımda ele alınan aşağıdaki uyarı görüntülenir:
'Movie' varlık türündeki 'Price' ondalık sütunu için tür belirtilmedi. Bu, varsayılan duyarlığa ve ölçeklendirmeye uymayan değerlerin sessizce kesilmesine neden olur. 'HasColumnType()' kullanarak tüm değerleri barındırabilecek SQL server sütun türünü açıkça belirtin.
PMC'de aşağıdaki komutu girin:
Update-Databasekomutu
Update-Database, uygulanmamış geçişlerde yöntemini çalıştırırUp. Bu durumda komutu, veritabanını oluşturan dosyasında yönteminiUpçalıştırırMigrations/<time-stamp>_InitialCreate.cs.
Veri bağlamı RazorPagesMovieContext:
- Microsoft.EntityFrameworkCore.DbContext'ten türetilir.
- Veri modeline hangi varlıkların dahil olduğunu belirtir.
-
EF Core Model için Oluşturma, Okuma, Güncelleştirme ve Silme gibi işlevleri koordine eder
Movie.
RazorPagesMovieContext Oluşturulan dosyadaki Data/RazorPagesMovieContext.cssınıfı:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using RazorPagesMovie.Models;
namespace RazorPagesMovie.Data
{
public class RazorPagesMovieContext : DbContext
{
public RazorPagesMovieContext (DbContextOptions<RazorPagesMovieContext> options)
: base(options)
{
}
public DbSet<RazorPagesMovie.Models.Movie> Movie { get; set; } = default!;
}
}
Yukarıdaki kod, varlık kümesi için bir DbSet<Movie> özelliği oluşturur. Entity Framework terminolojisinde bir varlık kümesi genellikle bir veritabanı tablosuna karşılık gelir. Varlık, tablodaki bir satıra karşılık gelir.
bağlantı dizesi adı, DbContextOptions nesnesinde bir yöntem çağrılarak bağlama geçirilir. Yerel geliştirme için Yapılandırma sistemi dosyadan appsettings.json bağlantı dizesi okur.
Uygulamayı test etme
Uygulamayı çalıştırın ve tarayıcıda (
/Movies) URL'ye ekleyinhttp://localhost:port/movies.Aşağıdaki hatayı alırsanız:
SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed. Login failed for user 'User-name'.Yeni Oluştur bağlantısını test edin.
Note
Alana ondalık virgül
Pricegiremeyebilirsiniz. Ondalık ayırıcı ve ABD İngilizcesi olmayan tarih biçimleri için virgül (",") kullanan İngilizce olmayan yerel ayarlar için jQuery doğrulamasını desteklemek için uygulamanın genelleştirilmesi gerekir. Genelleştirme yönergeleri için bu GitHub sorununa bakın.Düzenle, Ayrıntılar ve Sil bağlantılarını test edin.
Sonraki öğreticide, yapı iskelesi tarafından oluşturulan dosyalar açıklanmaktadır.
Bağımlılık ekleme ile kaydedilen bağlamı inceleme
ASP.NET Core, bağımlılık ekleme ile oluşturulur. Veritabanı bağlamı EF Core gibi hizmetler, uygulama başlatma sırasında bağımlılık ekleme ile kaydedilir. Bu hizmetleri gerektiren bileşenler (Sayfalar gibi Razor ) oluşturucu parametreleri aracılığıyla sağlanır. Veritabanı bağlam örneğini alan oluşturucu kodu öğreticinin ilerleyen bölümlerinde gösterilir.
İskele aracı otomatik olarak bir veritabanı bağlamı oluşturup bağımlılık ekleme kapsayıcısıyla kaydetti. Aşağıdaki vurgulanmış kod, iskele tarafından dosyaya Program.cs eklenir:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.MapStaticAssets();
app.MapRazorPages();
app.Run();
Tamamlanan örnekle ilgili sorun giderme
Çözemediğiniz bir sorunla karşılaşırsanız kodunuzu tamamlanmış projeyle karşılaştırın. Tamamlanan projeyi görüntüleme veya indirme (indirme).
Sonraki Adımlar
Bu öğreticide, bir veritabanındaki filmleri yönetmek için sınıflar eklenir. Uygulamanın model sınıfları, veritabanıyla çalışmak için Entity Framework Core (EF Core) kullanır. EF Core , veri erişimini basitleştiren bir nesne ilişkisel eşleyicidir (O/RM). Önce model sınıflarını yazar ve EF Core veritabanını oluşturur.
Model sınıfları, üzerinde bağımlılıkları olmadığından POCO sınıfları ("P) olarak bilinir. Veritabanında depolanan verilerin özelliklerini tanımlar.
Veri modeli ekleme
Çözüm Gezgini'da RazorPagesMovie projesiNeni Klasör Ekle'ye> sağ tıklayın. klasörünü
Modelsadlandırın.Klasöre
Modelssağ tıklayın. Sınıf>. Sınıfa Movie adını verin.Sınıfına aşağıdaki özellikleri
Movieekleyin:using System.ComponentModel.DataAnnotations; namespace RazorPagesMovie.Models; public class Movie { public int Id { get; set; } public string? Title { get; set; } [DataType(DataType.Date)] public DateTime ReleaseDate { get; set; } public string? Genre { get; set; } public decimal Price { get; set; } }
sınıfı aşağıdakileri Movie içerir:
Bu
IDalan, birincil anahtar için veritabanı tarafından gereklidir.-
- Kullanıcının tarih alanına saat bilgilerini girmesi gerekmez.
- Zaman bilgisi değil, yalnızca tarih görüntülenir.
Sonrasındaki soru işareti
stringözelliğin null atanabilir olduğunu gösterir. Daha fazla bilgi için bkz . Null atanabilir başvuru türleri.
DataAnnotations , sonraki bir öğreticide ele alınmıştır.
Derleme hatası olmadığını doğrulamak için projeyi derleyin.
Film modelinin iskelesini oluşturma
Bu bölümde, film modeli iskelesi oluşturulmuş. Diğer bir ifadeyle, iskele aracı film modeli için Oluşturma, Okuma, Güncelleştirme ve Silme (CRUD) işlemleri için sayfalar oluşturur.
Sayfalar/Filmler klasörünü oluşturun:
- Sayfalar klasörüne Yeni Klasör>>sağ tıklayın.
- Klasöre Filmler adını verin.
Sayfalar/Filmler klasörünesağ tıklayın.>
Yeni İskele Ekle iletişim kutusunda Entity Framework (CRUD)Razor
Razor kullanarak Sayfa Ekle iletişim kutusunu tamamlayın:
- Model sınıfı açılan listesinde Film (RazorPagesMovie.Models) öğesini seçin.
-
Veri bağlamı sınıf satırında (artı) işaretini seçin + .
- Veri Bağlamı Ekle iletişim kutusunda sınıf adı
RazorPagesMovie.Data.RazorPagesMovieContextoluşturulur. - Veritabanı sağlayıcısı açılan listesinde SQL Server'ı seçin.
- Veri Bağlamı Ekle iletişim kutusunda sınıf adı
- Add (Ekle) seçeneğini belirleyin.
Dosyaappsettings.json, yerel veritabanına bağlanmak için kullanılan bağlantı dizesi güncelleştirilir.
Warning
Bu makalede, kullanıcının kimliğinin doğrulanması gerekmeyen bir yerel veritabanı kullanılır. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Dağıtılan test ve üretim uygulamaları için kimlik doğrulaması hakkında daha fazla bilgi için bkz . Güvenli kimlik doğrulama akışları.
Oluşturulan ve güncelleştirilen dosyalar
İskele işlemi aşağıdaki dosyaları oluşturur:
- Sayfalar/Filmler: Oluşturma, Silme, Ayrıntılar, Düzenleme ve Dizin oluşturma.
Data/RazorPagesMovieContext.cs
Oluşturulan dosyalar sonraki öğreticide açıklanmıştır.
İskele işlemi dosyaya aşağıdaki vurgulanmış kodu Program.cs ekler:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
Değişiklikler Program.cs bu öğreticinin ilerleyen bölümlerinde açıklanmıştır.
EF'nin geçiş özelliğini kullanarak ilk veritabanı şemasını oluşturma
Entity Framework Core'daki geçişler özelliği şunları yapmak için bir yol sağlar:
- İlk veritabanı şemasını oluşturun.
- Veritabanı şemasını uygulamanın veri modeliyle eşitlenmiş durumda tutmak için artımlı olarak güncelleştirin. Veritabanındaki mevcut veriler korunur.
Bu bölümde, Paket Yöneticisi Konsolu (PMC) penceresi şunları yapmak için kullanılır:
İlk geçişi ekleyin.
Veritabanını ilk geçişle güncelleştirin.
Araçlar menüsünde NuGet Paket Yöneticisi
PMC'de aşağıdaki komutu girin:
Add-Migration InitialCreatekomutu,
Add-Migrationilk veritabanı şemasını oluşturmak için kod oluşturur. Şema, içindeDbContextbelirtilen modeli temel alır. bağımsızInitialCreatedeğişkeni geçişi adlandırmak için kullanılır. Herhangi bir ad kullanılabilir, ancak kurala göre geçişi açıklayan bir ad seçilir.
Sonraki bir adımda ele alınan aşağıdaki uyarı görüntülenir:
'Movie' varlık türündeki 'Price' ondalık sütunu için tür belirtilmedi. Bu, varsayılan duyarlığa ve ölçeklendirmeye uymayan değerlerin sessizce kesilmesine neden olur. 'HasColumnType()' kullanarak tüm değerleri barındırabilecek SQL server sütun türünü açıkça belirtin.
PMC'de aşağıdaki komutu girin:
Update-Databasekomutu
Update-Database, uygulanmamış geçişlerde yöntemini çalıştırırUp. Bu durumda komutu, veritabanını oluşturan dosyasında yönteminiUpçalıştırırMigrations/<time-stamp>_InitialCreate.cs.
Veri bağlamı RazorPagesMovieContext:
- Microsoft.EntityFrameworkCore.DbContext'ten türetilir.
- Veri modeline hangi varlıkların dahil olduğunu belirtir.
-
EF Core Model için Oluşturma, Okuma, Güncelleştirme ve Silme gibi işlevleri koordine eder
Movie.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using RazorPagesMovie.Models;
namespace RazorPagesMovie.Data
{
public class RazorPagesMovieContext : DbContext
{
public RazorPagesMovieContext (DbContextOptions<RazorPagesMovieContext> options)
: base(options)
{
}
public DbSet<RazorPagesMovie.Models.Movie> Movie { get; set; } = default!;
}
}
Yukarıdaki kod, varlık kümesi için bir DbSet<Movie> özelliği oluşturur. Entity Framework terminolojisinde bir varlık kümesi genellikle bir veritabanı tablosuna karşılık gelir. Varlık, tablodaki bir satıra karşılık gelir.
bağlantı dizesi adı, DbContextOptions nesnesinde bir yöntem çağrılarak bağlama geçirilir. Yerel geliştirme için Yapılandırma sistemi dosyadan appsettings.json bağlantı dizesi okur.
Uygulamayı test etme
Uygulamayı çalıştırın ve tarayıcıda (
/Movies) URL'ye ekleyinhttp://localhost:port/movies.Aşağıdaki hatayı alırsanız:
SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed. Login failed for user 'User-name'.Yeni Oluştur bağlantısını test edin.
Note
Alana ondalık virgül
Pricegiremeyebilirsiniz. Ondalık ayırıcı ve ABD İngilizcesi olmayan tarih biçimleri için virgül (",") kullanan İngilizce olmayan yerel ayarlar için jQuery doğrulamasını desteklemek için uygulamanın genelleştirilmesi gerekir. Genelleştirme yönergeleri için bu GitHub sorununa bakın.Düzenle, Ayrıntılar ve Sil bağlantılarını test edin.
Sonraki öğreticide, yapı iskelesi tarafından oluşturulan dosyalar açıklanmaktadır.
Bağımlılık ekleme ile kaydedilen bağlamı inceleme
ASP.NET Core, bağımlılık ekleme ile oluşturulur. Veritabanı bağlamı EF Core gibi hizmetler, uygulama başlatma sırasında bağımlılık ekleme ile kaydedilir. Bu hizmetleri gerektiren bileşenler (Sayfalar gibi Razor ) oluşturucu parametreleri aracılığıyla sağlanır. Veritabanı bağlam örneğini alan oluşturucu kodu öğreticinin ilerleyen bölümlerinde gösterilir.
İskele aracı otomatik olarak bir veritabanı bağlamı oluşturup bağımlılık ekleme kapsayıcısıyla kaydetti. Aşağıdaki vurgulanmış kod, iskele tarafından dosyaya Program.cs eklenir:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
Tamamlanan örnekle ilgili sorun giderme
Çözemediğiniz bir sorunla karşılaşırsanız kodunuzu tamamlanmış projeyle karşılaştırın. Tamamlanan projeyi görüntüleme veya indirme (indirme).
Sonraki Adımlar
Bu öğreticide, bir veritabanındaki filmleri yönetmek için sınıflar eklenir. Uygulamanın model sınıfları, veritabanıyla çalışmak için Entity Framework Core (EF Core) kullanır. EF Core , veri erişimini basitleştiren bir nesne ilişkisel eşleyicidir (O/RM). Önce model sınıflarını yazar ve EF Core veritabanını oluşturur.
Model sınıfları, üzerinde bağımlılıkları olmadığından POCO sınıfları ("P) olarak bilinir. Veritabanında depolanan verilerin özelliklerini tanımlar.
Veri modeli ekleme
Çözüm Gezgini'da RazorPagesMovie projesiNeni Klasör Ekle'ye> sağ tıklayın. klasörünü
Modelsadlandırın.Klasöre
Modelssağ tıklayın. Sınıf>. Sınıfa Movie adını verin.Sınıfına aşağıdaki özellikleri
Movieekleyin:using System.ComponentModel.DataAnnotations; namespace RazorPagesMovie.Models; public class Movie { public int Id { get; set; } public string? Title { get; set; } [DataType(DataType.Date)] public DateTime ReleaseDate { get; set; } public string? Genre { get; set; } public decimal Price { get; set; } }
sınıfı aşağıdakileri Movie içerir:
Bu
IDalan, birincil anahtar için veritabanı tarafından gereklidir.-
- Kullanıcının tarih alanına saat bilgilerini girmesi gerekmez.
- Zaman bilgisi değil, yalnızca tarih görüntülenir.
Sonrasındaki soru işareti
stringözelliğin null atanabilir olduğunu gösterir. Daha fazla bilgi için bkz . Null atanabilir başvuru türleri.
DataAnnotations , sonraki bir öğreticide ele alınmıştır.
Derleme hatası olmadığını doğrulamak için projeyi derleyin.
Film modelinin iskelesini oluşturma
Bu bölümde, film modeli iskelesi oluşturulmuş. Diğer bir ifadeyle, iskele aracı film modeli için Oluşturma, Okuma, Güncelleştirme ve Silme (CRUD) işlemleri için sayfalar oluşturur.
Sayfalar/Filmler klasörünü oluşturun:
- Sayfalar klasörüne Yeni Klasör>>sağ tıklayın.
- Klasöre Filmler adını verin.
Sayfalar/Filmler klasörünesağ tıklayın.>
Yeni İskele Ekle iletişim kutusunda Entity Framework (CRUD)Razor
Razor kullanarak Sayfa Ekle iletişim kutusunu tamamlayın:
- Model sınıfı açılan listesinde Film (RazorPagesMovie.Models) öğesini seçin.
-
Veri bağlamı sınıf satırında (artı) işaretini seçin + .
- Veri Bağlamı Ekle iletişim kutusunda sınıf adı
RazorPagesMovie.Data.RazorPagesMovieContextoluşturulur. - Veritabanı sağlayıcısı açılan listesinde SQL Server'ı seçin.
- Veri Bağlamı Ekle iletişim kutusunda sınıf adı
- Add (Ekle) seçeneğini belirleyin.
Dosyaappsettings.json, yerel veritabanına bağlanmak için kullanılan bağlantı dizesi güncelleştirilir.
Warning
Bu makalede, kullanıcının kimliğinin doğrulanması gerekmeyen bir yerel veritabanı kullanılır. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Dağıtılan test ve üretim uygulamaları için kimlik doğrulaması hakkında daha fazla bilgi için bkz . Güvenli kimlik doğrulama akışları.
Oluşturulan ve güncelleştirilen dosyalar
İskele işlemi aşağıdaki dosyaları oluşturur:
- Sayfalar/Filmler: Oluşturma, Silme, Ayrıntılar, Düzenleme ve Dizin oluşturma.
Data/RazorPagesMovieContext.cs
Oluşturulan dosyalar sonraki öğreticide açıklanmıştır.
İskele işlemi dosyaya aşağıdaki vurgulanmış kodu Program.cs ekler:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
Değişiklikler Program.cs bu öğreticinin ilerleyen bölümlerinde açıklanmıştır.
EF'nin geçiş özelliğini kullanarak ilk veritabanı şemasını oluşturma
Entity Framework Core'daki geçişler özelliği şunları yapmak için bir yol sağlar:
- İlk veritabanı şemasını oluşturun.
- Veritabanı şemasını uygulamanın veri modeliyle eşitlenmiş durumda tutmak için artımlı olarak güncelleştirin. Veritabanındaki mevcut veriler korunur.
Bu bölümde, Paket Yöneticisi Konsolu (PMC) penceresi şunları yapmak için kullanılır:
- İlk geçişi ekleyin.
- Veritabanını ilk geçişle güncelleştirin.
Araçlar menüsünde NuGet Paket Yöneticisi
PMC'de aşağıdaki komutları girin:
Add-Migration InitialCreate Update-Database
komutu,
Add-Migrationilk veritabanı şemasını oluşturmak için kod oluşturur. Şema, içindeDbContextbelirtilen modeli temel alır. bağımsızInitialCreatedeğişkeni geçişi adlandırmak için kullanılır. Herhangi bir ad kullanılabilir, ancak kurala göre geçişi açıklayan bir ad seçilir.komutu
Update-Database, uygulanmamış geçişlerde yöntemini çalıştırırUp. Bu durumda komutu, veritabanını oluşturan dosyasında yönteminiUpçalıştırırMigrations/<time-stamp>_InitialCreate.cs.
Sonraki bir adımda ele alınan aşağıdaki uyarı görüntülenir:
'Movie' varlık türündeki 'Price' ondalık sütunu için tür belirtilmedi. Bu, varsayılan duyarlığa ve ölçeklendirmeye uymayan değerlerin sessizce kesilmesine neden olur. 'HasColumnType()' kullanarak tüm değerleri barındırabilecek SQL server sütun türünü açıkça belirtin.
Veri bağlamı RazorPagesMovieContext:
- Microsoft.EntityFrameworkCore.DbContext'ten türetilir.
- Veri modeline hangi varlıkların dahil olduğunu belirtir.
-
EF Core Model için Oluşturma, Okuma, Güncelleştirme ve Silme gibi işlevleri koordine eder
Movie.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using RazorPagesMovie.Models;
namespace RazorPagesMovie.Data
{
public class RazorPagesMovieContext : DbContext
{
public RazorPagesMovieContext (DbContextOptions<RazorPagesMovieContext> options)
: base(options)
{
}
public DbSet<RazorPagesMovie.Models.Movie> Movie { get; set; } = default!;
}
}
Yukarıdaki kod, varlık kümesi için bir DbSet<Movie> özelliği oluşturur. Entity Framework terminolojisinde bir varlık kümesi genellikle bir veritabanı tablosuna karşılık gelir. Varlık, tablodaki bir satıra karşılık gelir.
bağlantı dizesi adı, DbContextOptions nesnesinde bir yöntem çağrılarak bağlama geçirilir. Yerel geliştirme için Yapılandırma sistemi dosyadan appsettings.json bağlantı dizesi okur.
Uygulamayı test etme
Uygulamayı çalıştırın ve tarayıcıda (
/Movies) URL'ye ekleyinhttp://localhost:port/movies.Aşağıdaki hatayı alırsanız:
SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed. Login failed for user 'User-name'.Yeni Oluştur bağlantısını test edin.
Note
Alana ondalık virgül
Pricegiremeyebilirsiniz. Ondalık ayırıcı ve ABD İngilizcesi olmayan tarih biçimleri için virgül (",") kullanan İngilizce olmayan yerel ayarlar için jQuery doğrulamasını desteklemek için uygulamanın genelleştirilmesi gerekir. Genelleştirme yönergeleri için bu GitHub sorununa bakın.Düzenle, Ayrıntılar ve Sil bağlantılarını test edin.
Sonraki öğreticide, yapı iskelesi tarafından oluşturulan dosyalar açıklanmaktadır.
Bağımlılık ekleme ile kaydedilen bağlamı inceleme
ASP.NET Core, bağımlılık ekleme ile oluşturulur. Veritabanı bağlamı EF Core gibi hizmetler, uygulama başlatma sırasında bağımlılık ekleme ile kaydedilir. Bu hizmetleri gerektiren bileşenler (Sayfalar gibi Razor ) oluşturucu parametreleri aracılığıyla sağlanır. Veritabanı bağlam örneğini alan oluşturucu kodu öğreticinin ilerleyen bölümlerinde gösterilir.
İskele aracı otomatik olarak bir veritabanı bağlamı oluşturup bağımlılık ekleme kapsayıcısıyla kaydetti. Aşağıdaki vurgulanmış kod, iskele tarafından dosyaya Program.cs eklenir:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
Tamamlanan örnekle ilgili sorun giderme
Çözemediğiniz bir sorunla karşılaşırsanız kodunuzu tamamlanmış projeyle karşılaştırın. Tamamlanan projeyi görüntüleme veya indirme (indirme).
Sonraki Adımlar
Bu öğreticide, bir veritabanındaki filmleri yönetmek için sınıflar eklenir. Uygulamanın model sınıfları, veritabanıyla çalışmak için Entity Framework Core (EF Core) kullanır. EF Core , veri erişimini basitleştiren bir nesne ilişkisel eşleyicidir (O/RM). Önce model sınıflarını yazar ve EF Core veritabanını oluşturur.
Model sınıfları, üzerinde bağımlılıkları olmadığından POCO sınıfları ("P) olarak bilinir. Veritabanında depolanan verilerin özelliklerini tanımlar.
Veri modeli ekleme
Çözüm Gezgini'da RazorPagesMovie projesiNeni Klasör Ekle'ye> sağ tıklayın. klasörünü
Modelsadlandırın.Klasöre
Modelssağ tıklayın. Sınıf>. Sınıfa Movie adını verin.Sınıfına aşağıdaki özellikleri
Movieekleyin:using System.ComponentModel.DataAnnotations; namespace RazorPagesMovie.Models { public class Movie { public int ID { get; set; } public string Title { get; set; } = string.Empty; [DataType(DataType.Date)] public DateTime ReleaseDate { get; set; } public string Genre { get; set; } = string.Empty; public decimal Price { get; set; } } }
sınıfı aşağıdakileri Movie içerir:
DataAnnotations , sonraki bir öğreticide ele alınmıştır.
Derleme hatası olmadığını doğrulamak için projeyi derleyin.
Film modelinin iskelesini oluşturma
Bu bölümde, film modeli iskelesi oluşturulmuş. Diğer bir ifadeyle, iskele aracı film modeli için Oluşturma, Okuma, Güncelleştirme ve Silme (CRUD) işlemleri için sayfalar oluşturur.
yapı iskelesi aracı için gereken NuGet paketini
Microsoft.EntityFrameworkCore.Designekleyin.- Araçlar menüsünden
- Gözat sekmesini seçin.
- Girin
Microsoft.EntityFrameworkCore.Designve listeden seçin. - Project'i denetledikten sonra Yükle'yi seçin
- Lisans Kabulü iletişim kutusunda Kabul Ediyorum'a tıklayın.
Sayfalar/Filmler klasörünü oluşturun:
- Sayfalar klasörüne Yeni Klasör>>sağ tıklayın.
- Klasöre Filmler adını verin.
Sayfalar/Filmler klasörünesağ tıklayın.>
Yeni İskele Ekle iletişim kutusunda Entity Framework (CRUD)Razor
Razor kullanarak Sayfa Ekle iletişim kutusunu tamamlayın:
- Model sınıfı açılan listesinde Film (RazorPagesMovie.Models) öğesini seçin.
-
Veri bağlamı sınıf satırında (artı) işaretini seçin + .
- Veri Bağlamı Ekle iletişim kutusunda sınıf adı
RazorPagesMovie.Data.RazorPagesMovieContextoluşturulur.
- Veri Bağlamı Ekle iletişim kutusunda sınıf adı
- Add (Ekle) seçeneğini belirleyin.
Paketi yüklemeniz
Microsoft.EntityFrameworkCore.SqlServergerektiğini belirten bir hata iletisi alırsanız, Yeni İskeleli Öğe Ekle'den> başlayarak adımları yineleyin.
Dosyaappsettings.json, yerel veritabanına bağlanmak için kullanılan bağlantı dizesi güncelleştirilir.
Warning
Bu makalede, kullanıcının kimliğinin doğrulanması gerekmeyen bir yerel veritabanı kullanılır. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Dağıtılan test ve üretim uygulamaları için kimlik doğrulaması hakkında daha fazla bilgi için bkz . Güvenli kimlik doğrulama akışları.
Oluşturulan ve güncelleştirilen dosyalar
İskele işlemi aşağıdaki dosyaları oluşturur:
- Sayfalar/Filmler: Oluşturma, Silme, Ayrıntılar, Düzenleme ve Dizin oluşturma.
Data/RazorPagesMovieContext.cs
Oluşturulan dosyalar sonraki öğreticide açıklanmıştır.
İskele işlemi dosyaya aşağıdaki vurgulanmış kodu Program.cs ekler:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
Değişiklikler Program.cs bu öğreticinin ilerleyen bölümlerinde açıklanmıştır.
EF'nin geçiş özelliğini kullanarak ilk veritabanı şemasını oluşturma
Entity Framework Core'daki geçişler özelliği şunları yapmak için bir yol sağlar:
- İlk veritabanı şemasını oluşturun.
- Veritabanı şemasını uygulamanın veri modeliyle eşitlenmiş durumda tutmak için artımlı olarak güncelleştirin. Veritabanındaki mevcut veriler korunur.
Bu bölümde, Paket Yöneticisi Konsolu (PMC) penceresi şunları yapmak için kullanılır:
- İlk geçişi ekleyin.
- Veritabanını ilk geçişle güncelleştirin.
Araçlar menüsünde NuGet Paket Yöneticisi
PMC'de aşağıdaki komutları girin:
Add-Migration InitialCreate Update-Database
Önceki komutlar Entity Framework Core araçlarını yükler ve komutunu çalıştırarak ilk veritabanı şemasını migrations oluşturan kodu oluşturur.
Sonraki bir adımda ele alınan aşağıdaki uyarı görüntülenir:
'Movie' varlık türündeki 'Price' ondalık sütunu için tür belirtilmedi. Bu, varsayılan duyarlığa ve ölçeklendirmeye uymayan değerlerin sessizce kesilmesine neden olur. 'HasColumnType()' kullanarak tüm değerleri barındırabilecek SQL server sütun türünü açıkça belirtin.
komutu, migrations ilk veritabanı şemasını oluşturmak için kod oluşturur. Şema, içinde DbContextbelirtilen modeli temel alır. Bağımsız InitialCreate değişken, geçişleri adlandırmak için kullanılır. Herhangi bir ad kullanılabilir, ancak kurala göre geçişi açıklayan bir ad seçilir.
komutu update , uygulanmamış geçişlerde yöntemini çalıştırır Up . Bu durumda, update veritabanını oluşturan dosyasında yöntemini Up çalıştırırMigrations/<time-stamp>_InitialCreate.cs.
Bağımlılık ekleme ile kaydedilen bağlamı inceleme
ASP.NET Core, bağımlılık ekleme ile oluşturulur. Veritabanı bağlamı EF Core gibi hizmetler, uygulama başlatma sırasında bağımlılık ekleme ile kaydedilir. Bu hizmetleri gerektiren bileşenler (Sayfalar gibi Razor ) oluşturucu parametreleri aracılığıyla sağlanır. Veritabanı bağlam örneğini alan oluşturucu kodu öğreticinin ilerleyen bölümlerinde gösterilir.
İskele aracı otomatik olarak bir veritabanı bağlamı oluşturup bağımlılık ekleme kapsayıcısıyla kaydetti. Aşağıdaki vurgulanmış kod, iskele tarafından dosyaya Program.cs eklenir:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
Veri bağlamı RazorPagesMovieContext:
- Microsoft.EntityFrameworkCore.DbContext'ten türetilir.
- Veri modeline hangi varlıkların dahil olduğunu belirtir.
-
EF Core Model için Oluşturma, Okuma, Güncelleştirme ve Silme gibi işlevleri koordine eder
Movie.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using RazorPagesMovie.Models;
namespace RazorPagesMovie.Data
{
public class RazorPagesMovieContext : DbContext
{
public RazorPagesMovieContext (DbContextOptions<RazorPagesMovieContext> options)
: base(options)
{
}
public DbSet<RazorPagesMovie.Models.Movie>? Movie { get; set; }
}
}
Yukarıdaki kod, varlık kümesi için bir DbSet<Movie> özelliği oluşturur. Entity Framework terminolojisinde bir varlık kümesi genellikle bir veritabanı tablosuna karşılık gelir. Varlık, tablodaki bir satıra karşılık gelir.
bağlantı dizesi adı, DbContextOptions nesnesinde bir yöntem çağrılarak bağlama geçirilir. Yerel geliştirme için Yapılandırma sistemi dosyadan appsettings.json bağlantı dizesi okur.
Uygulamayı test etme
Uygulamayı çalıştırın ve tarayıcıda (
/Movies) URL'ye ekleyinhttp://localhost:port/movies.Aşağıdaki hatayı alırsanız:
SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed. Login failed for user 'User-name'.Yeni Oluştur bağlantısını test edin.
Note
Alana ondalık virgül
Pricegiremeyebilirsiniz. Ondalık ayırıcı ve ABD İngilizcesi olmayan tarih biçimleri için virgül (",") kullanan İngilizce olmayan yerel ayarlar için jQuery doğrulamasını desteklemek için uygulamanın genelleştirilmesi gerekir. Genelleştirme yönergeleri için bu GitHub sorununa bakın.Düzenle, Ayrıntılar ve Sil bağlantılarını test edin.
Sonraki öğreticide, yapı iskelesi tarafından oluşturulan dosyalar açıklanmaktadır.
Tamamlanan örnekle ilgili sorun giderme
Çözemediğiniz bir sorunla karşılaşırsanız kodunuzu tamamlanmış projeyle karşılaştırın. Tamamlanan projeyi görüntüleme veya indirme (indirme).
Sonraki Adımlar
Bu bölümde, bir veritabanındaki filmleri yönetmek için sınıflar eklenir. Uygulamanın model sınıfları, veritabanıyla çalışmak için Entity Framework Core (EF Core) kullanır. EF Core , veri erişimini basitleştiren bir nesne ilişkisel eşleyicidir (O/RM). Önce model sınıflarını yazar ve EF Core veritabanını oluşturur.
Model sınıfları, üzerinde bağımlılıkları olmadığından POCO sınıfları ("P) olarak bilinir. Veritabanında depolanan verilerin özelliklerini tanımlar.
Örnek kodu görüntüleme veya indirme (indirme).
Veri modeli ekleme
Çözüm Gezgini'da RazorPagesMovie projesiNeni Klasör Ekle'ye> sağ tıklayın. klasörünü
Modelsadlandırın.Klasöre
Modelssağ tıklayın. Sınıf>. Sınıfa Movie adını verin.Sınıfına aşağıdaki özellikleri
Movieekleyin:using System; using System.ComponentModel.DataAnnotations; namespace RazorPagesMovie.Models { public class Movie { public int ID { get; set; } public string Title { get; set; } [DataType(DataType.Date)] public DateTime ReleaseDate { get; set; } public string Genre { get; set; } public decimal Price { get; set; } } }
sınıfı aşağıdakileri Movie içerir:
Bu
IDalan, birincil anahtar için veritabanı tarafından gereklidir.[DataType(DataType.Date)]: [DataType] özniteliği verilerin türünü (Date) belirtir. Bu öznitelikle:- Kullanıcının tarih alanına saat bilgilerini girmesi gerekmez.
- Zaman bilgisi değil, yalnızca tarih görüntülenir.
DataAnnotations , sonraki bir öğreticide ele alınmıştır.
Derleme hatası olmadığını doğrulamak için projeyi derleyin.
Film modelinin iskelesini oluşturma
Bu bölümde, film modeli iskelesi oluşturulmuş. Diğer bir ifadeyle, iskele aracı film modeli için Oluşturma, Okuma, Güncelleştirme ve Silme (CRUD) işlemleri için sayfalar oluşturur.
Sayfalar/Filmler klasörü oluşturma:
- Sayfalar klasörüne Yeni Klasör>>sağ tıklayın.
- Klasöre Filmler adını verin.
Sayfalar/Filmler klasörünesağ tıklayın.>
yapı iskelesi ekle iletişim kutusunda Entity Framework (CRUD)Razor
Razor kullanarak Sayfa Ekle iletişim kutusunu tamamlayın:
- Model sınıfı açılan listesinde Film (RazorPagesMovie.Models) öğesini seçin.
-
Veri bağlamı sınıf satırında (artı) işaretini seçin + .
- Veri Bağlamı Ekle iletişim kutusunda sınıf adı
RazorPagesMovie.Data.RazorPagesMovieContextoluşturulur.
- Veri Bağlamı Ekle iletişim kutusunda sınıf adı
- Add (Ekle) seçeneğini belirleyin.
Dosyaappsettings.json, yerel veritabanına bağlanmak için kullanılan bağlantı dizesi güncelleştirilir.
Warning
Bu makalede, kullanıcının kimliğinin doğrulanması gerekmeyen bir yerel veritabanı kullanılır. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Dağıtılan test ve üretim uygulamaları için kimlik doğrulaması hakkında daha fazla bilgi için bkz . Güvenli kimlik doğrulama akışları.
Oluşturulan ve güncelleştirilen dosyalar
İskele işlemi aşağıdaki dosyaları oluşturur:
- Sayfalar/Filmler: Oluşturma, Silme, Ayrıntılar, Düzenleme ve Dizin oluşturma.
Data/RazorPagesMovieContext.cs
Güncelleştirilmiş dosyalar
Startup.cs
Oluşturulan ve güncelleştirilen dosyalar sonraki bölümde açıklanmıştır.
EF'nin geçiş özelliğini kullanarak ilk veritabanı şemasını oluşturma
Entity Framework Core'daki geçişler özelliği şunları yapmak için bir yol sağlar:
- İlk veritabanı şemasını oluşturun.
- Veritabanı şemasını uygulamanın veri modeliyle eşitlenmiş durumda tutmak için artımlı olarak güncelleştirin. Veritabanındaki mevcut veriler korunur.
Bu bölümde, Paket Yöneticisi Konsolu (PMC) penceresi şunları yapmak için kullanılır:
- İlk geçişi ekleyin.
- Veritabanını ilk geçişle güncelleştirin.
Araçlar menüsünde NuGet Paket Yöneticisi
PMC'de aşağıdaki komutları girin:
Add-Migration InitialCreate Update-Database
SQL Server için, önceki komutlar şu uyarıyı oluşturur: "'Movie' varlık türündeki 'Price' ondalık sütunu için tür belirtilmedi. Bu, varsayılan duyarlığa ve ölçeklendirmeye uymayan değerlerin sessizce kesilmesine neden olur. 'HasColumnType()' kullanarak tüm değerleri barındırabilecek SQL server sütun türünü açıkça belirtin."
Sonraki bir adımda ele alınacağı için uyarıyı yoksayın.
komutu, migrations ilk veritabanı şemasını oluşturmak için kod oluşturur. Şema, içinde DbContextbelirtilen modeli temel alır. Bağımsız InitialCreate değişken, geçişleri adlandırmak için kullanılır. Herhangi bir ad kullanılabilir, ancak kurala göre geçişi açıklayan bir ad seçilir.
komutu update , uygulanmamış geçişlerde yöntemini çalıştırır Up . Bu durumda, update veritabanını oluşturan dosyasında yöntemini Up çalıştırırMigrations/<time-stamp>_InitialCreate.cs.
Bağımlılık ekleme ile kaydedilen bağlamı inceleme
ASP.NET Core, bağımlılık ekleme ile oluşturulur. Veritabanı bağlamı EF Core gibi hizmetler, uygulama başlatma sırasında bağımlılık ekleme ile kaydedilir. Bu hizmetleri gerektiren bileşenler (Sayfalar gibi Razor ) oluşturucu parametreleri aracılığıyla sağlanır. Veritabanı bağlam örneğini alan oluşturucu kodu öğreticinin ilerleyen bölümlerinde gösterilir.
İskele aracı otomatik olarak bir veritabanı bağlamı oluşturup bağımlılık ekleme kapsayıcısıyla kaydetti.
Startup.ConfigureServices yöntemini inceleyin. Vurgulanan çizgi iskele tarafından eklendi:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));
}
RazorPagesMovieContext Model için EF Core Oluşturma, Okuma, Güncelleştirme ve Silme gibi koordinat Movie işlevselliği. Veri bağlamı (RazorPagesMovieContext), Microsoft.EntityFrameworkCore.DbContext'ten türetilir. Veri bağlamı, veri modeline hangi varlıkların dahil olduğunu belirtir.
using Microsoft.EntityFrameworkCore;
namespace RazorPagesMovie.Data
{
public class RazorPagesMovieContext : DbContext
{
public RazorPagesMovieContext (
DbContextOptions<RazorPagesMovieContext> options)
: base(options)
{
}
public DbSet<RazorPagesMovie.Models.Movie> Movie { get; set; }
}
}
Yukarıdaki kod, varlık kümesi için bir DbSet<Movie> özelliği oluşturur. Entity Framework terminolojisinde bir varlık kümesi genellikle bir veritabanı tablosuna karşılık gelir. Varlık, tablodaki bir satıra karşılık gelir.
bağlantı dizesi adı, DbContextOptions nesnesinde bir yöntem çağrılarak bağlama geçirilir. Yerel geliştirme için Yapılandırma sistemi dosyadan appsettings.json bağlantı dizesi okur.
Uygulamayı test etme
Uygulamayı çalıştırın ve tarayıcıda (
/Movies) URL'ye ekleyinhttp://localhost:port/movies.Aşağıdaki hatayı alırsanız:
SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed. Login failed for user 'User-name'.Oluştur bağlantısını test edin.
Note
Alana ondalık virgül
Pricegiremeyebilirsiniz. Ondalık ayırıcı ve ABD İngilizcesi olmayan tarih biçimleri için virgül (",") kullanan İngilizce olmayan yerel ayarlar için jQuery doğrulamasını desteklemek için uygulamanın genelleştirilmesi gerekir. Genelleştirme yönergeleri için bu GitHub sorununa bakın.Düzenle, Ayrıntılar ve Sil bağlantılarını test edin.
Entity Framework Core'un SQL Günlüğü
Günlük yapılandırması genellikle Logging dosyalarının appsettings.{Environment}.json bölümü tarafından sağlanır. SQL deyimlerini günlüğe kaydetmek için "Microsoft.EntityFrameworkCore.Database.Command": "Information" dosyasına ekleyinappsettings.Development.json:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyDB-2;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
,"Microsoft.EntityFrameworkCore.Database.Command": "Information"
}
},
"AllowedHosts": "*"
}
Yukarıdaki JSON ile, SQL deyimleri komut satırında ve Visual Studio çıkış penceresinde görüntülenir.
Daha fazla bilgi için bkz . .NET ve ASP.NET Core'da oturum açma ve bu GitHub sorunu.
Sonraki öğreticide, yapı iskelesi tarafından oluşturulan dosyalar açıklanmaktadır.
Sonraki Adımlar
Bu bölümde, filmleri yönetmek için sınıflar eklenir. Uygulamanın model sınıfları, veritabanıyla çalışmak için Entity Framework Core (EF Core) kullanır. EF Core , veri erişimini basitleştiren bir nesne ilişkisel eşleyicidir (O/RM).
Model sınıfları, üzerinde EF Coreherhangi bir bağımlılığı olmadığından POCO sınıfları ("düz eski CLR nesnelerinden") olarak bilinir. Veritabanında depolanan verilerin özelliklerini tanımlar.
Örnek kodu görüntüleme veya indirme (indirme).
Warning
Bu makalede, kullanıcının kimliğinin doğrulanması gerekmeyen bir yerel veritabanı kullanılır. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Dağıtılan test ve üretim uygulamaları için kimlik doğrulaması hakkında daha fazla bilgi için bkz . Güvenli kimlik doğrulama akışları.
Veri modeli ekleme
RazorPagesMovie projesiNeni Klasör Ekle'ye> klasörünü Modelsadlandırın.
Klasöre Models sağ tıklayın. Sınıf>. Sınıfa Movie adını verin.
Sınıfına aşağıdaki özellikleri Movie ekleyin:
using System;
using System.ComponentModel.DataAnnotations;
namespace RazorPagesMovie.Models
{
public class Movie
{
public int ID { get; set; }
public string Title { get; set; }
[DataType(DataType.Date)]
public DateTime ReleaseDate { get; set; }
public string Genre { get; set; }
public decimal Price { get; set; }
}
}
sınıfı aşağıdakileri Movie içerir:
Bu
IDalan, birincil anahtar için veritabanı tarafından gereklidir.[DataType(DataType.Date)]: DataType özniteliği, verilerin türünü (Date) belirtir. Bu öznitelikle:- Kullanıcının tarih alanına saat bilgilerini girmesi gerekmez.
- Zaman bilgisi değil, yalnızca tarih görüntülenir.
DataAnnotations , sonraki bir öğreticide ele alınmıştır.
DataAnnotations , sonraki bir öğreticide ele alınmıştır.
Derleme hatası olmadığını doğrulamak için projeyi derleyin.
Film modelinin iskelesini oluşturma
Bu bölümde, film modeli iskelesi oluşturulmuş. Diğer bir ifadeyle, iskele aracı film modeli için Oluşturma, Okuma, Güncelleştirme ve Silme (CRUD) işlemleri için sayfalar oluşturur.
Sayfalar/Filmler klasörü oluşturma:
- Sayfalar klasörüne Yeni Klasör>>sağ tıklayın.
- Klasöre Filmler adını verin.
Sayfalar/Filmler klasörünesağ tıklayın.>
yapı iskelesi ekle iletişim kutusunda Entity Framework (CRUD)Razor
Razor kullanarak Sayfa Ekle iletişim kutusunu tamamlayın:
- Model sınıfı açılan listesinde Film (RazorPagesMovie.Models) öğesini seçin.
-
Veri bağlamı sınıfı satırında (artı) işaretini seçin + ve RazorPagesMovie.
Models. RazorPagesMovieContext to RazorPagesMovie.Veriler. RazorPagesMovieContext. Bu değişiklik gerekli değildir. Doğru ad alanına sahip veritabanı bağlam sınıfını oluşturur. - Add (Ekle) seçeneğini belirleyin.
Dosyaappsettings.json, yerel veritabanına bağlanmak için kullanılan bağlantı dizesi güncelleştirilir.
Oluşturulan dosyalar
İskele işlemi aşağıdaki dosyaları oluşturur ve güncelleştirir:
- Sayfalar/Filmler: Oluşturma, Silme, Ayrıntılar, Düzenleme ve Dizin oluşturma.
Data/RazorPagesMovieContext.cs
Updated
Startup.cs
Oluşturulan ve güncelleştirilen dosyalar sonraki bölümde açıklanmıştır.
İlk geçiş
Bu bölümde, Paket Yöneticisi Konsolu (PMC) şunları yapmak için kullanılır:
- İlk geçişi ekleyin.
- Veritabanını ilk geçişle güncelleştirin.
Araçlar menüsünde NuGet Paket Yöneticisi
PMC'de aşağıdaki komutları girin:
Add-Migration InitialCreate
Update-Database
Yukarıdaki komutlar şu uyarıyı oluşturur: "'Movie' varlık türündeki 'Price' ondalık sütunu için tür belirtilmedi. Bu, varsayılan duyarlığa ve ölçeklendirmeye uymayan değerlerin sessizce kesilmesine neden olur. 'HasColumnType()' kullanarak tüm değerleri barındırabilecek SQL server sütun türünü açıkça belirtin."
Sonraki bir adımda ele alınacağı için uyarıyı yoksayın.
Migrations komutu, ilk veritabanı şemasını oluşturmak için kod oluşturur. Şema, içinde DbContextbelirtilen modeli temel alır. Bağımsız InitialCreate değişken, geçişleri adlandırmak için kullanılır. Herhangi bir ad kullanılabilir, ancak kurala göre geçişi açıklayan bir ad seçilir.
komutu update , uygulanmamış geçişlerde yöntemini çalıştırır Up . Bu durumda, update veritabanını oluşturan dosyasında yöntemini Up çalıştırırMigrations/<time-stamp>_InitialCreate.cs.
Bağımlılık ekleme ile kaydedilen bağlamı inceleme
ASP.NET Core, bağımlılık ekleme ile oluşturulur. Veritabanı bağlamı EF Core gibi hizmetler, uygulama başlatma sırasında bağımlılık ekleme ile kaydedilir. Sayfalar gibi Razor bu hizmetleri gerektiren bileşenler oluşturucu parametreleri aracılığıyla sağlanır. Veritabanı bağlam örneğini alan oluşturucu kodu öğreticinin ilerleyen bölümlerinde gösterilir.
İskele aracı otomatik olarak bir veritabanı bağlamı oluşturup bağımlılık ekleme kapsayıcısıyla kaydetti.
Startup.ConfigureServices yöntemini inceleyin. Vurgulanan çizgi iskele tarafından eklendi:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));
}
RazorPagesMovieContext Model için EF Core Oluşturma, Okuma, Güncelleştirme ve Silme gibi koordinat Movie işlevselliği. Veri bağlamı (RazorPagesMovieContext), Microsoft.EntityFrameworkCore.DbContext'ten türetilir. Veri bağlamı, veri modeline hangi varlıkların dahil olduğunu belirtir.
using Microsoft.EntityFrameworkCore;
namespace RazorPagesMovie.Data
{
public class RazorPagesMovieContext : DbContext
{
public RazorPagesMovieContext (
DbContextOptions<RazorPagesMovieContext> options)
: base(options)
{
}
public DbSet<RazorPagesMovie.Models.Movie> Movie { get; set; }
}
}
Yukarıdaki kod, varlık kümesi için bir DbSet<Movie> özelliği oluşturur. Entity Framework terminolojisinde bir varlık kümesi genellikle bir veritabanı tablosuna karşılık gelir. Varlık, tablodaki bir satıra karşılık gelir.
bağlantı dizesi adı, DbContextOptions nesnesinde bir yöntem çağrılarak bağlama geçirilir. Yerel geliştirme için Yapılandırma sistemi dosyadan appsettings.json bağlantı dizesi okur.
Uygulamayı test etme
- Uygulamayı çalıştırın ve tarayıcıda (
/Movies) URL'ye ekleyinhttp://localhost:port/movies.
Şu hatayı alabilirsiniz:
SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
Login failed for user 'User-name'.
Oluştur bağlantısını test edin.
Note
Alana ondalık virgül
Pricegiremeyebilirsiniz. Ondalık ayırıcı ve ABD İngilizcesi olmayan tarih biçimleri için virgül (",") kullanan İngilizce olmayan yerel ayarlar için jQuery doğrulamasını desteklemek için uygulamanın genelleştirilmesi gerekir. Genelleştirme yönergeleri için bu GitHub sorununa bakın.Düzenle, Ayrıntılar ve Sil bağlantılarını test edin.
Sonraki öğreticide, yapı iskelesi tarafından oluşturulan dosyalar açıklanmaktadır.
Sonraki Adımlar
ASP.NET Core