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 10 sürümüne bakın.
Bu öğreticide, veritabanındaki filmleri yönetmek için sınıflar eklersiniz. 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ı, "Plain-Old CLR Objects" ifadesinden gelen POCO sınıfları olarak bilinir; çünkü EF Core bağımlılıkları yoktur. Veritabanında depolanan verilerin özelliklerini tanımlar.
Veri modeli ekleme
Çözüm Gezgini'ndeRazorPagesMovie projesine sağ tıklayın. Ekle>Yeni Klasör'ü seçin. klasörünü
Modelsadlandırın.Klasöre
Modelssağ tıklayın. Ekle>Sınıf seçeneğini belirleyin. Sınıfa Movie adını verin.Aşağıdaki özellikleri
Moviesınıfına 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; } }
Movie sınıfı aşağıdakileri içerir:
Bu
IDalan, birincil anahtar için veritabanı tarafından gereklidir.[DataType]
ReleaseDateözelliğindeki veri türünü belirten bir öznitelik. Bu özniteliği kullanarak:- Kullanıcının tarih alanına saat bilgilerini girmesi gerekmez.
- Herhangi bir zaman bilgisi olmadan yalnızca tarih görüntülenir.
stringsonrasındaki soru işareti, özelliğin null olabilir 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 modeli için iskelet oluşturma
Bu bölümde, film modelinin iskelesini oluşturursunuz. Bir 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:
- Pages klasörüne sağ tıklayın >Ekle>Yeni Klasör.
- Klasöre Filmler adını verin.
Pages/Movies klasörüne sağ tıklayıp >Add>New Scaffolded Item seçin.
- Yeni İskelet Ekle iletişim kutusunda RazorEntity Framework Kullanarak Sayfalar (CRUD)>Ekle'yi seçin.
Entity Framework Kullanarak Razor Sayfalar Ekleme (CRUD) iletişim kutusunu tamamlayın:
- Model sınıfı açılır listesinde Movie (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.
appsettings.json dosyası, yerel bir veritabanına bağlanmak için kullanılan bağlantı dizesiyle güncellenir.
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
Sonraki öğreticide, oluşturulan dosyalar açıklanmaktadır.
İskele oluşturma işlemi, aşağıda vurgulanan kodu Program.cs dosyasına 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()
.WithStaticAssets();
app.Run();
Bu öğreticide daha sonra değişiklikler hakkında Program.cs öğreneceksiniz.
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. Bu yaklaşım veritabanındaki mevcut verileri korur.
Bu bölümde, Paket Yöneticisi Konsolu (PMC) penceresini kullanarak şunları yapın:
İlk migrasyonu ekleyin.
Veritabanını ilk geçişle güncelleştirin.
Araçlar menüsünden NuGet Paket Yöneticisi>Paket Yöneticisi Konsolu'nu seçin.
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ız değişken,InitialCreategöçü isimlendirir. Herhangi bir ad kullanabilirsiniz, ancak kurala göre geçişi açıklayan bir ad seçin.
Sonraki bir adımda ele almak istediğiniz aşağıdaki uyarı görüntülenir:
'Movie' varlık türündeki 'Price' ondalık sütunu için hiçbir mağaza türü belirtilmedi. Bu koşul, varsayılan duyarlık ve ölçeklendirmeye uymayan değerlerin sessizce kesilmesine neden olur. 'HasColumnType' kullanarak 'OnModelCreating' içindeki tüm değerleri barındırabilecek SQL server sütun türünü açıkça belirtin, 'HasPrecision' kullanarak duyarlık ve ölçek belirtin veya 'HasConversion' kullanarak bir değer dönüştürücü yapılandırın.
PMC'de aşağıdaki komutu girin:
Update-DatabaseUpdate-Databasekomutu, uygulanmayan geçişlerdeUpyöntemini çalıştırır. Bu durumda komut, veritabanını oluşturanUpyönteminiMigrations/<time-stamp>_InitialCreate.csdosyasında çalıştırır.
Veri bağlamı RazorPagesMovieContext:
- Microsoft.EntityFrameworkCore.DbContext sınıfından 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 iletilir. 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ıdaki URL'nin sonuna
/Moviesekleyin (http://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'.migrasyon adımını kaçırdınız.
Yeni Oluştur bağlantısını test edin.
Note
Price alanına ondalık virgül giremeyebilirsiniz. Ondalık ayırıcı olarak virgül (",") kullanan İngilizce dışındaki yerel ayarlar ve ABD İngilizcesi dışındaki tarih biçimleri için jQuery doğrulamasını desteklemek amacıyla uygulamanın küreselleş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.
Bir sonraki eğitim, iskelet oluşturma ile oluşturulan dosyaları açıklar.
Bağımlılık enjeksiyonu ile kaydedilen bağlamı inceleyin
ASP.NET Core, bağımlılık ekleme ile oluşturulur. Uygulama başlatma sırasında bağımlılık enjeksiyonu ile veritabanı bağlamı gibi EF Core hizmetleri kaydedin. Oluşturucu parametreleri aracılığıyla bu hizmetleri (örneğin Razor Sayfaları) gerektiren bileşenler sağlayın. Veritabanı bağlam örneğini alan oluşturucu kodu öğreticinin ilerleyen bölümlerinde gösterilir.
iskeleleme aracı otomatik olarak bir veritabanı bağlamı oluşturur ve bunu bağımlılık enjeksiyon kapsayıcısıyla kaydeder. Aşağıda vurgulanan kod, oluşturucu tarafından Program.cs dosyasına 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()
.WithStaticAssets();
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ı, "Plain-Old CLR Objects" ifadesinden gelen POCO sınıfları olarak bilinir; çünkü EF Core bağımlılıkları yoktur. Veritabanında depolanan verilerin özelliklerini tanımlar.
Veri modeli ekleme
Çözüm Gezgini'nde, RazorPagesMovie projesine sağ tıklayın, >Ekle>Yeni Klasör seçeneğini belirleyin. klasörünü
Modelsadlandırın.Klasöre
Modelssağ tıklayın. Ekle>Sınıf seçeneğini belirleyin. Sınıfa Movie adını verin.Aşağıdaki özellikleri
Moviesınıfına 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; } }
Movie sınıfı aşağıdakileri içerir:
Bu
IDalan, birincil anahtar için veritabanı tarafından gereklidir.[DataType]
ReleaseDateözelliğindeki veri türünü belirten bir öznitelik. Bu öznitelikle:- Kullanıcının tarih alanına saat bilgilerini girmesi gerekmez.
- Zaman bilgisi değil, yalnızca tarih görüntülenir.
stringöğesinden sonraki soru işareti, özelliğin null atanabilir olduğunu gösterir. Daha fazla bilgi için Null atanabilir başvuru türleri konusuna bakın.
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 modelinin iskeleti oluşturulur. 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:
- Pages klasörüne sağ tıklayın, >Ekle>Yeni Klasör seçeneğini seçin.
- Klasöre Filmler adını verin.
Pages/Movies klasörüne sağ tıklayın, >Ekle>Yeni İskelet Öğesi'ni seçin.
Yeni İskelet Ekle iletişim kutusunda RazorEntity Framework kullanan Sayfalar (CRUD)>Ekle seçeneğini belirleyin.
Entity Framework kullanarak Razor Sayfalar Ekle (CRUD) iletişim kutusunu tamamlayın:
- Model class açılır listesinde Movie (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.
appsettings.json dosyası, yerel bir veritabanına bağlanmak için kullanılan bağlantı dizesiyle güncellenir.
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 oluşturma işlemi, aşağıda vurgulanan kodu Program.cs dosyasına 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();
Program.cs değişiklikler bu eğitimde daha sonra açıklanmaktadı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 migrasyonu ekleyin.
Veritabanını ilk geçişle güncelleştirin.
Araçlar menüsünden NuGet Paket Yöneticisi>Paket Yöneticisi Konsolu'nu seçin.
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.InitialCreateargümanı, geçişe ad vermek 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-DatabaseUpdate-Databasekomutu, henüz uygulanmamış geçişlerdekiUpyöntemini çalıştırır. Bu durumda komut, veritabanını oluşturanUpyönteminiMigrations/<time-stamp>_InitialCreate.csdosyasında çalıştırır.
Veri bağlamı RazorPagesMovieContext:
- Microsoft.EntityFrameworkCore.DbContext sınıfından türetilir.
- Veri modeline hangi varlıkların dahil olduğunu belirtir.
-
EF Core işlevlerini, örneğin
Moviemodeli için Oluşturma, Okuma, Güncelleştirme ve Silme işlemlerini, koordine eder.
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ı dizesinin adı, DbContextOptions nesnesi üzerinde bir yöntem çağrılarak bağlama aktarılır. 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ıdaki URL'nin sonuna
/Moviesekleyin (http://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'.migrasyon adımını kaçırdınız.
Yeni Oluştur bağlantısını test edin.
Note
Pricealanına ondalık virgül giremeyebilirsiniz. Ondalık ayırıcı olarak virgül (",") kullanan İngilizce dışındaki yerel ayarlar ve ABD İngilizcesi dışındaki tarih biçimleri için jQuery doğrulamasını desteklemek amacıyla uygulamanın küreselleş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.
Bir sonraki eğitim, iskelet oluşturma ile oluşturulan dosyaları açıklar.
Bağımlılık enjeksiyonu ile kaydedilen bağlamı inceleyin
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.
İskelet oluşturma aracı, otomatik olarak bir veritabanı bağlamı oluşturdu ve bunu bağımlılık enjeksiyonu kapsayıcısına kaydetti. Aşağıda vurgulanan kod, oluşturucu tarafından Program.cs dosyasına 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ı, "Plain-Old CLR Objects" ifadesinden gelen POCO sınıfları olarak bilinir; çünkü EF Core bağımlılıkları yoktur. Veritabanında depolanan verilerin özelliklerini tanımlar.
Veri modeli ekleme
Çözüm Gezgini'nde, RazorPagesMovie projesine sağ tıklayın, >Ekle>Yeni Klasör seçeneğini belirleyin. klasörünü
Modelsadlandırın.Klasöre
Modelssağ tıklayın. Ekle>Sınıf seçeneğini belirleyin. Sınıfa Movie adını verin.Aşağıdaki özellikleri
Moviesınıfına 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; } }
Movie sınıfı aşağıdakileri içerir:
Bu
IDalan, birincil anahtar için veritabanı tarafından gereklidir.[DataType]
ReleaseDateözelliğindeki veri türünü belirten bir öznitelik. Bu öznitelikle:- Kullanıcının tarih alanına saat bilgilerini girmesi gerekmez.
- Zaman bilgisi değil, yalnızca tarih görüntülenir.
stringsonrasındaki soru işareti, özelliğin null olabileceğini 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 modeli için iskelet oluşturma
Bu bölümde, film modelinin iskeleti oluşturulur. Diğer bir ifadeyle, iskelet oluşturma aracı film modeli için Oluşturma, Okuma, Güncelleştirme ve Silme (CRUD) işlemlerine yönelik sayfalar üretir.
Sayfalar/Filmler klasörünü oluşturun:
- Pages klasörüne sağ tıklayın >Ekle>Yeni Klasör.
- Klasöre Filmler adını verin.
Pages/Movies klasörüne sağ tıklayıp >Add>New Scaffolded Item seçin.
Yeni İskelet Ekle iletişim kutusunda RazorEntity Framework Kullanarak Sayfalar (CRUD)>Ekle'yi seçin.
Entity Framework Kullanarak Razor Sayfalar Ekleme (CRUD) iletişim kutusunu tamamlayın:
- Model sınıfı açılır listesinde Movie (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.
appsettings.json dosyası, yerel bir veritabanına bağlanmak için kullanılan bağlantı dizesiyle güncellenir.
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 oluşturma işlemi, aşağıda vurgulanan kodu Program.cs dosyasına 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();
Program.cs değişiklikler bu eğitimde daha sonra açıklanmaktadı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 migrasyonu ekleyin.
Veritabanını ilk geçişle güncelleştirin.
Araçlar menüsünden NuGet Paket Yöneticisi>Paket Yöneticisi Konsolu'nu seçin.
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.InitialCreateargümanı, geçişe ad vermek 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-DatabaseUpdate-Databasekomutu, henüz uygulanmamış geçişlerdeUpyöntemini çalıştırır. Bu durumda komut, veritabanını oluşturanUpyönteminiMigrations/<time-stamp>_InitialCreate.csdosyasında çalıştırır.
Veri bağlamı RazorPagesMovieContext:
- Microsoft.EntityFrameworkCore.DbContext sınıfından türetilir.
- Veri modeline hangi varlıkların dahil olduğunu belirtir.
-
EF Core işlevlerini, örneğin
Moviemodeli için Oluşturma, Okuma, Güncelleştirme ve Silme işlemlerini, koordine eder.
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ı dizesinin adı, DbContextOptions nesnesi üzerinde 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ıdaki URL'nin sonuna
/Moviesekleyin (http://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'.migrasyon adımını kaçırdınız.
Yeni Oluştur bağlantısını test edin.
Note
Pricealanına ondalık virgül giremeyebilirsiniz. Ondalık ayırıcı olarak virgül (",") kullanan İngilizce dışındaki yerel ayarlar ve ABD İngilizcesi dışındaki tarih biçimleri için jQuery doğrulamasını desteklemek amacıyla uygulamanın küreselleş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.
Bir sonraki eğitim, iskelet oluşturma ile oluşturulan dosyaları açıklar.
Bağımlılık enjeksiyonu ile kaydedilen bağlamı inceleyin
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.
İskelet oluşturma aracı otomatik olarak bir veritabanı bağlamı oluşturdu ve bunu bağımlılık enjeksiyonu kapsayıcısına kaydetti. Aşağıda vurgulanan kod, oluşturucu tarafından Program.cs dosyasına 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ı, "Plain-Old CLR Objects" ifadesinden gelen POCO sınıfları olarak bilinir; çünkü EF Core bağımlılıkları yoktur. Veritabanında depolanan verilerin özelliklerini tanımlar.
Veri modeli ekleme
Çözüm Gezgini'nde, RazorPagesMovie projesine sağ tıklayın, >Ekle>Yeni Klasör seçeneğini belirleyin. klasörünü
Modelsadlandırın.Klasöre
Modelssağ tıklayın. Ekle>Sınıf seçeneğini belirleyin. Sınıfa Movie adını verin.Aşağıdaki özellikleri
Moviesınıfına 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; } }
Movie sınıfı aşağıdakileri içerir:
Bu
IDalan, birincil anahtar için veritabanı tarafından gereklidir.[DataType]
ReleaseDateözelliğindeki veri türünü belirten bir öznitelik. Bu öznitelikle:- Kullanıcının tarih alanına saat bilgilerini girmesi gerekmez.
- Zaman bilgisi değil, yalnızca tarih görüntülenir.
stringsonrasındaki soru işareti, özelliğin null olabileceğini 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 modeli için iskelet oluşturma
Bu bölümde, film modelinin iskeleti oluşturulur. Diğer bir ifadeyle, iskelet oluşturma aracı film modeli için Oluşturma, Okuma, Güncelleştirme ve Silme (CRUD) işlemlerine yönelik sayfalar üretir.
Sayfalar/Filmler klasörünü oluşturun:
- Pages klasörüne sağ tıklayın >Ekle>Yeni Klasör.
- Klasöre Filmler adını verin.
Pages/Movies klasörüne sağ tıklayıp >Add>New Scaffolded Item seçin.
Yeni İskelet Ekle iletişim kutusunda RazorEntity Framework Kullanarak Sayfalar (CRUD)>Ekle'yi seçin.
Entity Framework Kullanarak Razor Sayfalar Ekleme (CRUD) iletişim kutusunu tamamlayın:
- Model sınıfı açılır listesinde Movie (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.
appsettings.json dosyası, yerel bir veritabanına bağlanmak için kullanılan bağlantı dizesiyle güncellenir.
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 oluşturma işlemi, aşağıda vurgulanan kodu Program.cs dosyasına 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();
Program.cs değişiklikler bu eğitimde daha sonra açıklanmaktadı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 migrasyonu ekleyin.
- Veritabanını ilk geçişle güncelleştirin.
Araçlar menüsünden 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-Migrationilk veritabanı şemasını oluşturmak için kod oluşturur. Şema, içindeDbContextbelirtilen modeli temel alır.InitialCreateargümanı, geçişe ad vermek için kullanılır. Herhangi bir ad kullanılabilir, ancak kurala göre geçişi açıklayan bir ad seçilir.Update-Databasekomutu, uygulanmamış geçişlerdekiUpyöntemini çalıştırır. Bu durumda komut, veritabanını oluşturanUpyönteminiMigrations/<time-stamp>_InitialCreate.csdosyasında çalıştırır.
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 sınıfından türetilir.
- Veri modeline hangi varlıkların dahil olduğunu belirtir.
-
EF Core işlevlerini, örneğin
Moviemodeli için Oluşturma, Okuma, Güncelleştirme ve Silme işlemlerini, koordine eder.
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ı dizesinin adı, DbContextOptions nesnesi üzerinde 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ıdaki URL'nin sonuna
/Moviesekleyin (http://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'.migrasyon adımını kaçırdınız.
Yeni Oluştur bağlantısını test edin.
Note
Pricealanına ondalık virgül giremeyebilirsiniz. Ondalık ayırıcı olarak virgül (",") kullanan İngilizce dışındaki yerel ayarlar ve ABD İngilizcesi dışındaki tarih biçimleri için jQuery doğrulamasını desteklemek amacıyla uygulamanın küreselleş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.
Bir sonraki eğitim, iskelet oluşturma ile oluşturulan dosyaları açıklar.
Bağımlılık enjeksiyonu ile kaydedilen bağlamı inceleyin
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.
İskelet oluşturma aracı, otomatik olarak bir veritabanı bağlamı oluşturdu ve bunu bağımlılık enjeksiyonu kapsayıcısına kaydetti. Aşağıda vurgulanan kod, oluşturucu tarafından Program.cs dosyasına 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ı, "Plain-Old CLR Objects" ifadesinden gelen POCO sınıfları olarak bilinir; çünkü EF Core bağımlılıkları yoktur. Veritabanında depolanan verilerin özelliklerini tanımlar.
Veri modeli ekleme
Çözüm Gezgini'nde, RazorPagesMovie projesine sağ tıklayın, >Ekle>Yeni Klasör seçeneğini belirleyin. klasörünü
Modelsadlandırın.Klasöre
Modelssağ tıklayın. Ekle>Sınıf seçeneğini belirleyin. Sınıfa Movie adını verin.Aşağıdaki özellikleri
Moviesınıfına 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; } } }
Movie sınıfı aşağıdakileri içerir:
Bu
IDalan, birincil anahtar için veritabanı tarafından gereklidir.[DataType]
ReleaseDateözelliğindeki veri türünü belirten bir öznitelik. 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 modeli için iskelet oluşturma
Bu bölümde, film modelinin iskeleti oluşturulur. Diğer bir ifadeyle, iskelet oluşturma aracı film modeli için Oluşturma, Okuma, Güncelleştirme ve Silme (CRUD) işlemlerine yönelik sayfalar üretir.
İskelet oluşturma aracı için gerekli olan NuGet paketini
Microsoft.EntityFrameworkCore.Designekleyin.-
Araçlar menüsünden NuGet Paket Yöneticisi>Çözüm için NuGet Paketlerini Yönet
öğesini seçin - Gözat sekmesini seçin.
-
Microsoft.EntityFrameworkCore.Designyazın ve listeden seçin. - Project'i denetledikten sonra Yükle'yi seçin
- Lisans Kabulü iletişim kutusunda Kabul Ediyorum'a tıklayın.
-
Araçlar menüsünden NuGet Paket Yöneticisi>Çözüm için NuGet Paketlerini Yönet
Sayfalar/Filmler klasörünü oluşturun:
- Pages klasörüne sağ tıklayın >Ekle>Yeni Klasör.
- Klasöre Filmler adını verin.
Pages/Movies klasörüne sağ tıklayıp >Add>New Scaffolded Item seçin.
Yeni İskelet Ekle iletişim kutusunda RazorEntity Framework Kullanarak Sayfalar (CRUD)>Ekle'yi seçin.
Entity Framework Kullanarak Razor Sayfalar Ekleme (CRUD) iletişim kutusunu tamamlayın:
- Model sınıfı açılır listesinde Movie (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.
appsettings.json dosyası, yerel bir veritabanına bağlanmak için kullanılan bağlantı dizesiyle güncellenir.
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 oluşturma işlemi, aşağıda vurgulanan kodu Program.cs dosyasına 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();
Program.cs değişiklikler bu eğitimde daha sonra açıklanmaktadı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 migrasyonu ekleyin.
- Veritabanını ilk geçişle güncelleştirin.
Araçlar menüsünden 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 DbContextbelirtilen modeli temel alır.
InitialCreate bağımsız değişkeni, migrasyonları 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.
update komutu, henüz uygulanmamış geçişlerdeki Up yöntemini çalıştırır. Bu durumda, update, veritabanını oluşturan Migrations/<time-stamp>_InitialCreate.cs dosyasındaki Up yöntemini çalıştırır.
Bağımlılık enjeksiyonu ile kaydedilen bağlamı inceleyin
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.
İskelet oluşturma aracı, otomatik olarak bir veritabanı bağlamı oluşturdu ve bunu bağımlılık enjeksiyonu kapsayıcısına kaydetti. Aşağıda vurgulanan kod, oluşturucu tarafından Program.cs dosyasına 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 sınıfından türetilir.
- Veri modeline hangi varlıkların dahil olduğunu belirtir.
-
EF Core işlevlerini, örneğin
Moviemodeli için Oluşturma, Okuma, Güncelleştirme ve Silme işlemlerini, koordine eder.
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ı dizesinin adı, DbContextOptions nesnesi üzerinde bir yöntem çağrılarak bağlama aktarılır. 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ıdaki URL'nin sonuna
/Moviesekleyin (http://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'.migrasyon adımını kaçırdınız.
Yeni Oluştur bağlantısını test edin.
Note
Pricealanına ondalık virgül giremeyebilirsiniz. Ondalık ayırıcı olarak virgül (",") kullanan İngilizce dışındaki yerel ayarlar ve ABD İngilizcesi dışındaki tarih biçimleri için jQuery doğrulamasını desteklemek amacıyla uygulamanın küreselleş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.
Bir sonraki eğitim, iskelet oluşturma ile oluşturulan dosyaları açıklar.
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ı, "Plain-Old CLR Objects" ifadesinden gelen POCO sınıfları olarak bilinir; çünkü EF Core bağımlılıkları yoktur. Veritabanında depolanan verilerin özelliklerini tanımlar.
Örnek kodu görüntüleme veya indirme (indirme).
Veri modeli ekleme
Çözüm Gezgini'nde, RazorPagesMovie projesine sağ tıklayın, >Ekle>Yeni Klasör seçeneğini belirleyin. klasörünü
Modelsadlandırın.Klasöre
Modelssağ tıklayın. Ekle>Sınıf seçeneğini belirleyin. Sınıfa Movie adını verin.Aşağıdaki özellikleri
Moviesınıfına 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; } } }
Movie sınıfı aşağıdakileri 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 modeli için iskelet oluşturma
Bu bölümde, film modelinin iskeleti oluşturulur. Diğer bir ifadeyle, iskelet oluşturma aracı film modeli için Oluşturma, Okuma, Güncelleştirme ve Silme (CRUD) işlemlerine yönelik sayfalar üretir.
Sayfalar/Filmler klasörü oluşturma:
- Pages klasörüne sağ tıklayın >Ekle>Yeni Klasör.
- Klasöre Filmler adını verin.
Pages/Movies klasörüne sağ tıklayıp >Add>New Scaffolded Item seçin.
İskele Ekle iletişim kutusunda, RazorEntity Framework kullanan Sayfalar (CRUD)>Ekle seçeneğini belirleyin.
Entity Framework Kullanarak Razor Sayfalar Ekleme (CRUD) iletişim kutusunu tamamlayın:
- Model sınıfı açılır listesinde Movie (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.
appsettings.json dosyası, yerel bir veritabanına bağlanmak için kullanılan bağlantı dizesiyle güncellenir.
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 migrasyonu ekleyin.
- Veritabanını ilk geçişle güncelleştirin.
Araçlar menüsünden 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’da önceki komutlar şu uyarıyı üretir: "'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."
Daha sonraki bir adımda ele alınacağı için uyarıyı göz ardı edin.
komutu, migrations ilk veritabanı şemasını oluşturmak için kod oluşturur. Şema, içinde DbContextbelirtilen modeli temel alır.
InitialCreate bağımsız değişkeni, migrasyonları 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.
update komutu, henüz uygulanmamış geçişlerdeki Up yöntemini çalıştırır. Bu durumda, update, veritabanını oluşturan Migrations/<time-stamp>_InitialCreate.cs dosyasındaki Up yöntemini çalıştırır.
Bağımlılık enjeksiyonu ile kaydedilen bağlamı inceleyin
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.
İskelet oluşturma aracı, otomatik olarak bir veritabanı bağlamı oluşturdu ve bunu bağımlılık enjeksiyonu kapsayıcısına 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, Movie modeli için EF Core Oluşturma, Okuma, Güncelleştirme ve Silme gibi işlevleri koordine eder. 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ı dizesinin adı, DbContextOptions nesnesi üzerinde bir yöntem çağrılarak bağlama aktarılır. 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ıdaki URL'nin sonuna
/Moviesekleyin (http://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'.migrasyon adımını kaçırdınız.
Oluştur bağlantısını test edin.
Note
Pricealanına ondalık virgül giremeyebilirsiniz. Ondalık ayırıcı olarak virgül (",") kullanan İngilizce dışındaki yerel ayarlar ve ABD İngilizcesi dışındaki tarih biçimleri için jQuery doğrulamasını desteklemek amacıyla uygulamanın küreselleş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üğe kaydetme yapılandırması genellikle appsettings.{Environment}.json dosyalarının Logging bölümünde sağlanır. SQL ifadelerini günlüğe kaydetmek için "Microsoft.EntityFrameworkCore.Database.Command": "Information" öğesini appsettings.Development.json dosyasına ekleyin:
{
"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 aşağıdaki kaynaklara bakın:
- .NET ve ASP.NET Core'da oturum açma
-
ASP.NET şablonu SQL günlüğünü varsayılan olarak devre dışı bırakır EF Core (
dotnet/aspnetcore#32977)
Bir sonraki eğitim, iskelet oluşturma ile oluşturulan dosyaları açıklar.
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 projesine sağ tıklayın, >Ekle>Yeni Klasör seçeneğini belirleyin. klasörünü Modelsadlandırın.
Klasöre Models sağ tıklayın.
Ekle>Sınıf seçeneğini belirleyin. Sınıfa Movie adını verin.
Aşağıdaki özellikleri Movie sınıfına 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; }
}
}
Movie sınıfı aşağıdakileri 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 modeli için iskelet oluşturma
Bu bölümde, film modelinin iskeleti oluşturulur. Diğer bir ifadeyle, iskelet oluşturma aracı film modeli için Oluşturma, Okuma, Güncelleştirme ve Silme (CRUD) işlemlerine yönelik sayfalar üretir.
Sayfalar/Filmler klasörü oluşturma:
- Pages klasörüne sağ tıklayın >Ekle>Yeni Klasör.
- Klasöre Filmler adını verin.
Pages/Movies klasörüne sağ tıklayıp >Add>New Scaffolded Item seçin.
İskele Ekle iletişim kutusunda, RazorEntity Framework kullanan Sayfalar (CRUD)>Ekle seçeneğini belirleyin.
Entity Framework Kullanarak Razor Sayfalar Ekleme (CRUD) iletişim kutusunu tamamlayın:
- Model sınıfı açılır listesinde Movie (RazorPagesMovie.Models) öğesini seçin.
-
Veri bağlamı sınıfı satırında, + (artı) işaretini seçin ve oluşturulan adı RazorPagesMovie.
Models.RazorPagesMovieContext yerine RazorPagesMovie.Data.RazorPagesMovieContext olarak değiştirin. 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.
appsettings.json dosyası, yerel bir veritabanına bağlanmak için kullanılan bağlantı dizesiyle güncellenir.
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 migrasyonu ekleyin.
- Veritabanını ilk geçişle güncelleştirin.
Araçlar menüsünden 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."
Daha sonraki bir adımda ele alınacağı için uyarıyı göz ardı edin.
Migrations komutu, ilk veritabanı şemasını oluşturmak için kod oluşturur. Şema, içinde DbContextbelirtilen modeli temel alır.
InitialCreate bağımsız değişkeni, migrasyonları 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.
update komutu, henüz uygulanmamış geçişlerdeki Up yöntemini çalıştırır. Bu durumda, update, veritabanını oluşturan Migrations/<time-stamp>_InitialCreate.cs dosyasındaki Up yöntemini çalıştırır.
Bağımlılık enjeksiyonu ile kaydedilen bağlamı inceleyin
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.
İskelet oluşturma aracı, otomatik olarak bir veritabanı bağlamı oluşturdu ve bunu bağımlılık enjeksiyonu kapsayıcısına 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, Movie modeli için EF Core Oluşturma, Okuma, Güncelleştirme ve Silme gibi işlevleri koordine eder. 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ı dizesinin adı, DbContextOptions nesnesi üzerinde bir yöntem çağrılarak bağlama aktarılır. 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ıdaki URL'nin sonuna
/Moviesekleyin (http://localhost:port/movies).
Şu hatayı alırsanız:
SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
Login failed for user 'User-name'.
migrasyon adımını kaçırdınız.
Oluştur bağlantısını test edin.
Note
Pricealanına ondalık virgül giremeyebilirsiniz. Ondalık ayırıcı olarak virgül (",") kullanan İngilizce dışındaki yerel ayarlar ve ABD İngilizcesi dışındaki tarih biçimleri için jQuery doğrulamasını desteklemek amacıyla uygulamanın küreselleş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.
Bir sonraki eğitim, iskelet oluşturma ile oluşturulan dosyaları açıklar.
Sonraki Adımlar
ASP.NET Core