2. Bölüm, ASP.NET Core'da Sayfalar uygulamasına Razor model ekleme
Uyarı
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 8 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 EF Corebağımlılıkları olmadığından POCO sınıfları ("Plain-O ld CLR Objects" öğesinden) 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ü
Models
adlandırın.Klasöre
Models
sağ tıklayın. Sınıf Ekle'yi>seçin. Sınıfa Movie adını verin.Sınıfına aşağıdaki özellikleri
Movie
ekleyin: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
ID
alan, birincil anahtar için veritabanı tarafından gereklidir.Özelliğindeki
ReleaseDate
veri türünü belirten [DataType] özniteliği. Bu öznitelikle:- 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 Ekle'ye>sağ tıklayın.
- Klasöre Filmler adını verin.
Sayfalar/Filmler klasörüne> Yeni İskeleli Öğe Ekle'ye>sağ tıklayın.
Yeni İskele Ekle iletişim kutusunda Entity Framework (CRUD)>Ekle'yi kullanan sayfalar'ı seçin.Razor
Entity Framework (CRUD) kullanarak Sayfa Ekle Razor 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.RazorPagesMovieContext
oluşturulur. - Veritabanı sağlayıcısı açılan listesinde SQL Server'ı seçin.
- Veri Bağlamı Ekle iletişim kutusunda sınıf adı
- Ekle'yi seçin.
Dosyaappsettings.json
, yerel veritabanına bağlanmak için kullanılan bağlantı dizesi güncelleştirilir.
Uyarı
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> Paket Yöneticisi Konsolu'nu seçin.
PMC'de aşağıdaki komutu girin:
Add-Migration InitialCreate
komutu,
Add-Migration
ilk veritabanı şemasını oluşturmak için kod oluşturur. Şema, içindeDbContext
belirtilen modeli temel alır. bağımsızInitialCreate
değ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-Database
komutu
Update-Database
, uygulanmamış geçişlerde yöntemini çalıştırırUp
. Bu durumda komutu, veritabanını oluşturan dosyasında yönteminiMigrations/<time-stamp>_InitialCreate.cs
çalıştırırUp
.
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.cs
sı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 (
http://localhost:port/movies
) URL'ye ekleyin/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.
Not
Alana ondalık virgül
Price
giremeyebilirsiniz. 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 EF Corebağımlılıkları olmadığından POCO sınıfları ("Plain-O ld CLR Objects" öğesinden) 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ü
Models
adlandırın.Klasöre
Models
sağ tıklayın. Sınıf Ekle'yi>seçin. Sınıfa Movie adını verin.Sınıfına aşağıdaki özellikleri
Movie
ekleyin: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
ID
alan, birincil anahtar için veritabanı tarafından gereklidir.Özelliğindeki
ReleaseDate
veri türünü belirten [DataType] özniteliği. Bu öznitelikle:- 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 Ekle'ye>sağ tıklayın.
- Klasöre Filmler adını verin.
Sayfalar/Filmler klasörüne> Yeni İskeleli Öğe Ekle'ye>sağ tıklayın.
Yeni İskele Ekle iletişim kutusunda Entity Framework (CRUD)>Ekle'yi kullanan sayfalar'ı seçin.Razor
Entity Framework (CRUD) kullanarak Sayfa Ekle Razor 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.RazorPagesMovieContext
oluşturulur. - Veritabanı sağlayıcısı açılan listesinde SQL Server'ı seçin.
- Veri Bağlamı Ekle iletişim kutusunda sınıf adı
- Ekle'yi seçin.
Dosyaappsettings.json
, yerel veritabanına bağlanmak için kullanılan bağlantı dizesi güncelleştirilir.
Uyarı
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> Paket Yöneticisi Konsolu'nu seçin.
PMC'de aşağıdaki komutu girin:
Add-Migration InitialCreate
komutu,
Add-Migration
ilk veritabanı şemasını oluşturmak için kod oluşturur. Şema, içindeDbContext
belirtilen modeli temel alır. bağımsızInitialCreate
değ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-Database
komutu
Update-Database
, uygulanmamış geçişlerde yöntemini çalıştırırUp
. Bu durumda komutu, veritabanını oluşturan dosyasında yönteminiMigrations/<time-stamp>_InitialCreate.cs
çalıştırırUp
.
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 (
http://localhost:port/movies
) URL'ye ekleyin/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.
Not
Alana ondalık virgül
Price
giremeyebilirsiniz. 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 EF Corebağımlılıkları olmadığından POCO sınıfları ("Plain-O ld CLR Objects" öğesinden) 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ü
Models
adlandırın.Klasöre
Models
sağ tıklayın. Sınıf Ekle'yi>seçin. Sınıfa Movie adını verin.Sınıfına aşağıdaki özellikleri
Movie
ekleyin: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
ID
alan, birincil anahtar için veritabanı tarafından gereklidir.Özelliğindeki
ReleaseDate
veri türünü belirten [DataType] özniteliği. Bu öznitelikle:- 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 Ekle'ye>sağ tıklayın.
- Klasöre Filmler adını verin.
Sayfalar/Filmler klasörüne> Yeni İskeleli Öğe Ekle'ye>sağ tıklayın.
Yeni İskele Ekle iletişim kutusunda Entity Framework (CRUD)>Ekle'yi kullanan sayfalar'ı seçin.Razor
Entity Framework (CRUD) kullanarak Sayfa Ekle Razor 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.RazorPagesMovieContext
oluşturulur. - Veritabanı sağlayıcısı açılan listesinde SQL Server'ı seçin.
- Veri Bağlamı Ekle iletişim kutusunda sınıf adı
- Ekle'yi seçin.
Dosyaappsettings.json
, yerel veritabanına bağlanmak için kullanılan bağlantı dizesi güncelleştirilir.
Uyarı
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> Paket Yöneticisi Konsolu'nu seçin.
PMC'de aşağıdaki komutları girin:
Add-Migration InitialCreate Update-Database
komutu,
Add-Migration
ilk veritabanı şemasını oluşturmak için kod oluşturur. Şema, içindeDbContext
belirtilen modeli temel alır. bağımsızInitialCreate
değ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önteminiMigrations/<time-stamp>_InitialCreate.cs
çalıştırırUp
.
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 (
http://localhost:port/movies
) URL'ye ekleyin/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.
Not
Alana ondalık virgül
Price
giremeyebilirsiniz. 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 EF Corebağımlılıkları olmadığından POCO sınıfları ("Plain-O ld CLR Objects" öğesinden) 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ü
Models
adlandırın.Klasöre
Models
sağ tıklayın. Sınıf Ekle'yi>seçin. Sınıfa Movie adını verin.Sınıfına aşağıdaki özellikleri
Movie
ekleyin: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:
Bu
ID
alan, birincil anahtar için veritabanı tarafından gereklidir.Özelliğindeki
ReleaseDate
veri türünü belirten [DataType] özniteliği. 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.
yapı iskelesi aracı için gereken NuGet paketini
Microsoft.EntityFrameworkCore.Design
ekleyin.- Araçlar menüsünden NuGet Paket Yöneticisi> Çözüm için NuGet Paketlerini Yönet'i seçin
- Gözat sekmesini seçin.
- Girin
Microsoft.EntityFrameworkCore.Design
ve 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 Ekle'ye>sağ tıklayın.
- Klasöre Filmler adını verin.
Sayfalar/Filmler klasörüne> Yeni İskeleli Öğe Ekle'ye>sağ tıklayın.
Yeni İskele Ekle iletişim kutusunda Entity Framework (CRUD)>Ekle'yi kullanan sayfalar'ı seçin.Razor
Entity Framework (CRUD) kullanarak Sayfa Ekle Razor 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.RazorPagesMovieContext
oluşturulur.
- Veri Bağlamı Ekle iletişim kutusunda sınıf adı
- Ekle'yi seçin.
Paketi yüklemeniz
Microsoft.EntityFrameworkCore.SqlServer
gerektiğ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.
Uyarı
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> Paket Yöneticisi Konsolu'nu seçin.
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 DbContext
belirtilen 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 Migrations/<time-stamp>_InitialCreate.cs
çalıştırırUp
.
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 (
http://localhost:port/movies
) URL'ye ekleyin/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.
Not
Alana ondalık virgül
Price
giremeyebilirsiniz. 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 EF Corebağımlılıkları olmadığından POCO sınıfları ("Plain-O ld CLR Objects" öğesinden) 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ü
Models
adlandırın.Klasöre
Models
sağ tıklayın. Sınıf Ekle'yi>seçin. 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
ID
alan, 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 Ekle'ye>sağ tıklayın.
- Klasöre Filmler adını verin.
Sayfalar/Filmler klasörüne> Yeni İskeleli Öğe Ekle'ye>sağ tıklayın.
yapı iskelesi ekle iletişim kutusunda Entity Framework (CRUD)>Add kullanan sayfalar'ı seçin.Razor
Entity Framework (CRUD) kullanarak Sayfa Ekle Razor 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.RazorPagesMovieContext
oluşturulur.
- Veri Bağlamı Ekle iletişim kutusunda sınıf adı
- Ekle'yi seçin.
Dosyaappsettings.json
, yerel veritabanına bağlanmak için kullanılan bağlantı dizesi güncelleştirilir.
Uyarı
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> Paket Yöneticisi Konsolu'nu seçin.
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 DbContext
belirtilen 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 Migrations/<time-stamp>_InitialCreate.cs
çalıştırırUp
.
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 Movie
Oluşturma, Okuma, Güncelleştirme ve Silme gibi koordinat EF Core 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 (
http://localhost:port/movies
) URL'ye ekleyin/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.
Not
Alana ondalık virgül
Price
giremeyebilirsiniz. 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 appsettings.{Environment}.json
dosyalarının Logging
bölümü tarafından sağlanır. SQL deyimlerini günlüğe kaydetmek için appsettings.Development.json
dosyasına ekleyin"Microsoft.EntityFrameworkCore.Database.Command": "Information"
:
{
"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 Core ve ASP.NET Core'da günlüğe kaydetme 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).
Uyarı
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>> sağ tıklayın. klasörünü Models
adlandırın.
Klasöre Models
sağ tıklayın. Sınıf Ekle'yi>seçin. 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
ID
alan, 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 Ekle'ye>sağ tıklayın.
- Klasöre Filmler adını verin.
Sayfalar/Filmler klasörüne> Yeni İskeleli Öğe Ekle'ye>sağ tıklayın.
yapı iskelesi ekle iletişim kutusunda Entity Framework (CRUD)>Add kullanan sayfalar'ı seçin.Razor
Entity Framework (CRUD) kullanarak Sayfa Ekle Razor 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. - Ekle'yi seçin.
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
Güncelleştirildi
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> Paket Yöneticisi Konsolu'nu seçin.
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 DbContext
belirtilen 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 Migrations/<time-stamp>_InitialCreate.cs
çalıştırırUp
.
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 Movie
Oluşturma, Okuma, Güncelleştirme ve Silme gibi koordinat EF Core 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 (
http://localhost:port/movies
) URL'ye ekleyin/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.
Not
Alana ondalık virgül
Price
giremeyebilirsiniz. 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