Aracılığıyla paylaş


2. Bölüm, ASP.NET Core'da Sayfalar uygulamasına Razor model ekleme

Note

Bu, bu makalenin en son sürümü değildir. Geçerli sürüm için bu makalenin .NET 10 sürümüne bakın.

Warning

ASP.NET Core'un bu sürümü artık desteklenmiyor. Daha fazla bilgi için bkz . .NET ve .NET Core Destek İlkesi. Geçerli sürüm için bu makalenin .NET 9 sürümüne bakın.

Bu öğreticide, bir veritabanındaki filmleri yönetmek için sınıflar eklenir. Uygulamanın model sınıfları, veritabanıyla çalışmak için Entity Framework Core (EF Core) kullanır. EF Core , veri erişimini basitleştiren bir nesne ilişkisel eşleyicidir (O/RM). Önce model sınıflarını yazar ve EF Core veritabanını oluşturur.

Model sınıfları, üzerinde bağımlılıkları olmadığından POCO sınıfları ("P) olarak bilinir. Veritabanında depolanan verilerin özelliklerini tanımlar.

Veri modeli ekleme

  1. Çözüm Gezgini'da RazorPagesMovie projesiNeni Klasör Ekle'ye> sağ tıklayın. klasörünü Modelsadlandırın.

  2. Klasöre Models sağ tıklayın. Sınıf>. Sınıfa Movie adını verin.

  3. 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.

  • ö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.

  1. Sayfalar/Filmler klasörünü oluşturun:

    1. Sayfalar klasörüne Yeni Klasör>>sağ tıklayın.
    2. Klasöre Filmler adını verin.
  2. Sayfalar/Filmler klasörünesağ tıklayın.>

    Yeni İskeleli Öğe

  3. Yeni İskele Ekle iletişim kutusunda Entity Framework (CRUD)Razor

    yapı iskelesi ekleme

  4. Razor kullanarak Sayfa Ekle iletişim kutusunu tamamlayın:

    1. Model sınıfı açılan listesinde Film (RazorPagesMovie.Models) öğesini seçin.
    2. Veri bağlamı sınıf satırında (artı) işaretini seçin + .
      1. Veri Bağlamı Ekle iletişim kutusunda sınıf adı RazorPagesMovie.Data.RazorPagesMovieContext oluşturulur.
      2. Veritabanı sağlayıcısı açılan listesinde SQL Server'ı seçin.
    3. Add (Ekle) seçeneğini belirleyin.

    Sayfa Ekle Razor

Dosyaappsettings.json, yerel veritabanına bağlanmak için kullanılan bağlantı dizesi güncelleştirilir.

Warning

Bu makalede, kullanıcının kimliğinin doğrulanması gerekmeyen bir yerel veritabanı kullanılır. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Dağıtılan test ve üretim uygulamaları için kimlik doğrulaması hakkında daha fazla bilgi için bkz . Güvenli kimlik doğrulama akışları.

Oluşturulan ve güncelleştirilen dosyalar

İskele işlemi aşağıdaki dosyaları oluşturur:

  • Sayfalar/Filmler: Oluşturma, Silme, Ayrıntılar, Düzenleme ve Dizin oluşturma.
  • Data/RazorPagesMovieContext.cs

Oluşturulan dosyalar sonraki öğreticide açıklanmıştır.

İskele işlemi dosyaya aşağıdaki vurgulanmış kodu Program.cs ekler:

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();

app.UseRouting();

app.UseAuthorization();

app.MapStaticAssets();
app.MapRazorPages();

app.Run();

Değişiklikler Program.cs bu öğreticinin ilerleyen bölümlerinde açıklanmıştır.

EF'nin geçiş özelliğini kullanarak ilk veritabanı şemasını oluşturma

Entity Framework Core'daki geçişler özelliği şunları yapmak için bir yol sağlar:

  • İlk veritabanı şemasını oluşturun.
  • Veritabanı şemasını uygulamanın veri modeliyle eşitlenmiş durumda tutmak için artımlı olarak güncelleştirin. Veritabanındaki mevcut veriler korunur.

Bu bölümde, Paket Yöneticisi Konsolu (PMC) penceresi şunları yapmak için kullanılır:

  • İlk geçişi ekleyin.

  • Veritabanını ilk geçişle güncelleştirin.

  • Araçlar menüsünde NuGet Paket Yöneticisi

    PMC menüsü

  • 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çinde DbContextbelirtilen modeli temel alır. bağımsız InitialCreate 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ır Up . Bu durumda komutu, veritabanını oluşturan dosyasında yöntemini Up çalıştırırMigrations/<time-stamp>_InitialCreate.cs.

Veri bağlamı RazorPagesMovieContext:

  • Microsoft.EntityFrameworkCore.DbContext'ten türetilir.
  • Veri modeline hangi varlıkların dahil olduğunu belirtir.
  • EF Core Model için Oluşturma, Okuma, Güncelleştirme ve Silme gibi işlevleri koordine ederMovie.

RazorPagesMovieContext Oluşturulan dosyadaki Data/RazorPagesMovieContext.cssınıfı:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using RazorPagesMovie.Models;

namespace RazorPagesMovie.Data
{
    public class RazorPagesMovieContext : DbContext
    {
        public RazorPagesMovieContext (DbContextOptions<RazorPagesMovieContext> options)
            : base(options)
        {
        }

        public DbSet<RazorPagesMovie.Models.Movie> Movie { get; set; } = default!;
    }
}

Yukarıdaki kod, varlık kümesi için bir DbSet<Movie> özelliği oluşturur. Entity Framework terminolojisinde bir varlık kümesi genellikle bir veritabanı tablosuna karşılık gelir. Varlık, tablodaki bir satıra karşılık gelir.

bağlantı dizesi adı, DbContextOptions nesnesinde bir yöntem çağrılarak bağlama geçirilir. Yerel geliştirme için Yapılandırma sistemi dosyadan appsettings.json bağlantı dizesi okur.

Uygulamayı test etme

  1. Uygulamayı çalıştırın ve tarayıcıda (/Movies) URL'ye ekleyinhttp://localhost:port/movies.

    Aşağıdaki hatayı alırsanız:

    SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
    Login failed for user 'User-name'.
    

    Geçiş adımını kaçırdınız.

  2. Yeni Oluştur bağlantısını test edin.

    Sayfa oluştur

    Note

    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.

  3. Düzenle, Ayrıntılar ve Sil bağlantılarını test edin.

Sonraki öğreticide, yapı iskelesi tarafından oluşturulan dosyalar açıklanmaktadır.

Bağımlılık ekleme ile kaydedilen bağlamı inceleme

ASP.NET Core, bağımlılık ekleme ile oluşturulur. Veritabanı bağlamı EF Core gibi hizmetler, uygulama başlatma sırasında bağımlılık ekleme ile kaydedilir. Bu hizmetleri gerektiren bileşenler (Sayfalar gibi Razor ) oluşturucu parametreleri aracılığıyla sağlanır. Veritabanı bağlam örneğini alan oluşturucu kodu öğreticinin ilerleyen bölümlerinde gösterilir.

İskele aracı otomatik olarak bir veritabanı bağlamı oluşturup bağımlılık ekleme kapsayıcısıyla kaydetti. Aşağıdaki vurgulanmış kod, iskele tarafından dosyaya Program.cs eklenir:

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();

app.UseRouting();

app.UseAuthorization();

app.MapStaticAssets();
app.MapRazorPages();

app.Run();

Tamamlanan örnekle ilgili sorun giderme

Çözemediğiniz bir sorunla karşılaşırsanız kodunuzu tamamlanmış projeyle karşılaştırın. Tamamlanan projeyi görüntüleme veya indirme (indirme).

Sonraki Adımlar

Bu öğreticide, bir veritabanındaki filmleri yönetmek için sınıflar eklenir. Uygulamanın model sınıfları, veritabanıyla çalışmak için Entity Framework Core (EF Core) kullanır. EF Core , veri erişimini basitleştiren bir nesne ilişkisel eşleyicidir (O/RM). Önce model sınıflarını yazar ve EF Core veritabanını oluşturur.

Model sınıfları, üzerinde bağımlılıkları olmadığından POCO sınıfları ("P) olarak bilinir. Veritabanında depolanan verilerin özelliklerini tanımlar.

Veri modeli ekleme

  1. Çözüm Gezgini'da RazorPagesMovie projesiNeni Klasör Ekle'ye> sağ tıklayın. klasörünü Modelsadlandırın.

  2. Klasöre Models sağ tıklayın. Sınıf>. Sınıfa Movie adını verin.

  3. 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.

  • ö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.

  1. Sayfalar/Filmler klasörünü oluşturun:

    1. Sayfalar klasörüne Yeni Klasör>>sağ tıklayın.
    2. Klasöre Filmler adını verin.
  2. Sayfalar/Filmler klasörünesağ tıklayın.>

    Yeni İskeleli Öğe

  3. Yeni İskele Ekle iletişim kutusunda Entity Framework (CRUD)Razor

    yapı iskelesi ekleme

  4. Razor kullanarak Sayfa Ekle iletişim kutusunu tamamlayın:

    1. Model sınıfı açılan listesinde Film (RazorPagesMovie.Models) öğesini seçin.
    2. Veri bağlamı sınıf satırında (artı) işaretini seçin + .
      1. Veri Bağlamı Ekle iletişim kutusunda sınıf adı RazorPagesMovie.Data.RazorPagesMovieContext oluşturulur.
      2. Veritabanı sağlayıcısı açılan listesinde SQL Server'ı seçin.
    3. Add (Ekle) seçeneğini belirleyin.

    Sayfa Ekle Razor

Dosyaappsettings.json, yerel veritabanına bağlanmak için kullanılan bağlantı dizesi güncelleştirilir.

Warning

Bu makalede, kullanıcının kimliğinin doğrulanması gerekmeyen bir yerel veritabanı kullanılır. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Dağıtılan test ve üretim uygulamaları için kimlik doğrulaması hakkında daha fazla bilgi için bkz . Güvenli kimlik doğrulama akışları.

Oluşturulan ve güncelleştirilen dosyalar

İskele işlemi aşağıdaki dosyaları oluşturur:

  • Sayfalar/Filmler: Oluşturma, Silme, Ayrıntılar, Düzenleme ve Dizin oluşturma.
  • Data/RazorPagesMovieContext.cs

Oluşturulan dosyalar sonraki öğreticide açıklanmıştır.

İskele işlemi dosyaya aşağıdaki vurgulanmış kodu Program.cs ekler:

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();

Değişiklikler Program.cs bu öğreticinin ilerleyen bölümlerinde açıklanmıştır.

EF'nin geçiş özelliğini kullanarak ilk veritabanı şemasını oluşturma

Entity Framework Core'daki geçişler özelliği şunları yapmak için bir yol sağlar:

  • İlk veritabanı şemasını oluşturun.
  • Veritabanı şemasını uygulamanın veri modeliyle eşitlenmiş durumda tutmak için artımlı olarak güncelleştirin. Veritabanındaki mevcut veriler korunur.

Bu bölümde, Paket Yöneticisi Konsolu (PMC) penceresi şunları yapmak için kullanılır:

  • İlk geçişi ekleyin.

  • Veritabanını ilk geçişle güncelleştirin.

  • Araçlar menüsünde NuGet Paket Yöneticisi

    PMC menüsü

  • 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çinde DbContextbelirtilen modeli temel alır. bağımsız InitialCreate 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ır Up . Bu durumda komutu, veritabanını oluşturan dosyasında yöntemini Up çalıştırırMigrations/<time-stamp>_InitialCreate.cs.

Veri bağlamı RazorPagesMovieContext:

  • Microsoft.EntityFrameworkCore.DbContext'ten türetilir.
  • Veri modeline hangi varlıkların dahil olduğunu belirtir.
  • EF Core Model için Oluşturma, Okuma, Güncelleştirme ve Silme gibi işlevleri koordine ederMovie.
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

  1. Uygulamayı çalıştırın ve tarayıcıda (/Movies) URL'ye ekleyinhttp://localhost:port/movies.

    Aşağıdaki hatayı alırsanız:

    SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
    Login failed for user 'User-name'.
    

    Geçiş adımını kaçırdınız.

  2. Yeni Oluştur bağlantısını test edin.

    Sayfa oluştur

    Note

    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.

  3. Düzenle, Ayrıntılar ve Sil bağlantılarını test edin.

Sonraki öğreticide, yapı iskelesi tarafından oluşturulan dosyalar açıklanmaktadır.

Bağımlılık ekleme ile kaydedilen bağlamı inceleme

ASP.NET Core, bağımlılık ekleme ile oluşturulur. Veritabanı bağlamı EF Core gibi hizmetler, uygulama başlatma sırasında bağımlılık ekleme ile kaydedilir. Bu hizmetleri gerektiren bileşenler (Sayfalar gibi Razor ) oluşturucu parametreleri aracılığıyla sağlanır. Veritabanı bağlam örneğini alan oluşturucu kodu öğreticinin ilerleyen bölümlerinde gösterilir.

İskele aracı otomatik olarak bir veritabanı bağlamı oluşturup bağımlılık ekleme kapsayıcısıyla kaydetti. Aşağıdaki vurgulanmış kod, iskele tarafından dosyaya Program.cs eklenir:

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();

Tamamlanan örnekle ilgili sorun giderme

Çözemediğiniz bir sorunla karşılaşırsanız kodunuzu tamamlanmış projeyle karşılaştırın. Tamamlanan projeyi görüntüleme veya indirme (indirme).

Sonraki Adımlar

Bu öğreticide, bir veritabanındaki filmleri yönetmek için sınıflar eklenir. Uygulamanın model sınıfları, veritabanıyla çalışmak için Entity Framework Core (EF Core) kullanır. EF Core , veri erişimini basitleştiren bir nesne ilişkisel eşleyicidir (O/RM). Önce model sınıflarını yazar ve EF Core veritabanını oluşturur.

Model sınıfları, üzerinde bağımlılıkları olmadığından POCO sınıfları ("P) olarak bilinir. Veritabanında depolanan verilerin özelliklerini tanımlar.

Veri modeli ekleme

  1. Çözüm Gezgini'da RazorPagesMovie projesiNeni Klasör Ekle'ye> sağ tıklayın. klasörünü Modelsadlandırın.

  2. Klasöre Models sağ tıklayın. Sınıf>. Sınıfa Movie adını verin.

  3. 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.

  • ö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.

  1. Sayfalar/Filmler klasörünü oluşturun:

    1. Sayfalar klasörüne Yeni Klasör>>sağ tıklayın.
    2. Klasöre Filmler adını verin.
  2. Sayfalar/Filmler klasörünesağ tıklayın.>

    Yeni İskeleli Öğe

  3. Yeni İskele Ekle iletişim kutusunda Entity Framework (CRUD)Razor

    yapı iskelesi ekleme

  4. Razor kullanarak Sayfa Ekle iletişim kutusunu tamamlayın:

    1. Model sınıfı açılan listesinde Film (RazorPagesMovie.Models) öğesini seçin.
    2. Veri bağlamı sınıf satırında (artı) işaretini seçin + .
      1. Veri Bağlamı Ekle iletişim kutusunda sınıf adı RazorPagesMovie.Data.RazorPagesMovieContext oluşturulur.
      2. Veritabanı sağlayıcısı açılan listesinde SQL Server'ı seçin.
    3. Add (Ekle) seçeneğini belirleyin.

    Sayfa Ekle Razor

Dosyaappsettings.json, yerel veritabanına bağlanmak için kullanılan bağlantı dizesi güncelleştirilir.

Warning

Bu makalede, kullanıcının kimliğinin doğrulanması gerekmeyen bir yerel veritabanı kullanılır. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Dağıtılan test ve üretim uygulamaları için kimlik doğrulaması hakkında daha fazla bilgi için bkz . Güvenli kimlik doğrulama akışları.

Oluşturulan ve güncelleştirilen dosyalar

İskele işlemi aşağıdaki dosyaları oluşturur:

  • Sayfalar/Filmler: Oluşturma, Silme, Ayrıntılar, Düzenleme ve Dizin oluşturma.
  • Data/RazorPagesMovieContext.cs

Oluşturulan dosyalar sonraki öğreticide açıklanmıştır.

İskele işlemi dosyaya aşağıdaki vurgulanmış kodu Program.cs ekler:

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();

Değişiklikler Program.cs bu öğreticinin ilerleyen bölümlerinde açıklanmıştır.

EF'nin geçiş özelliğini kullanarak ilk veritabanı şemasını oluşturma

Entity Framework Core'daki geçişler özelliği şunları yapmak için bir yol sağlar:

  • İlk veritabanı şemasını oluşturun.
  • Veritabanı şemasını uygulamanın veri modeliyle eşitlenmiş durumda tutmak için artımlı olarak güncelleştirin. Veritabanındaki mevcut veriler korunur.

Bu bölümde, Paket Yöneticisi Konsolu (PMC) penceresi şunları yapmak için kullanılır:

  • İlk geçişi ekleyin.
  • Veritabanını ilk geçişle güncelleştirin.
  1. Araçlar menüsünde NuGet Paket Yöneticisi

    PMC menüsü

  2. 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çinde DbContextbelirtilen modeli temel alır. bağımsız InitialCreate 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ır Up . Bu durumda komutu, veritabanını oluşturan dosyasında yöntemini Up çalıştırırMigrations/<time-stamp>_InitialCreate.cs.

Sonraki bir adımda ele alınan aşağıdaki uyarı görüntülenir:

'Movie' varlık türündeki 'Price' ondalık sütunu için tür belirtilmedi. Bu, varsayılan duyarlığa ve ölçeklendirmeye uymayan değerlerin sessizce kesilmesine neden olur. 'HasColumnType()' kullanarak tüm değerleri barındırabilecek SQL server sütun türünü açıkça belirtin.

Veri bağlamı RazorPagesMovieContext:

  • Microsoft.EntityFrameworkCore.DbContext'ten türetilir.
  • Veri modeline hangi varlıkların dahil olduğunu belirtir.
  • EF Core Model için Oluşturma, Okuma, Güncelleştirme ve Silme gibi işlevleri koordine ederMovie.
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

  1. Uygulamayı çalıştırın ve tarayıcıda (/Movies) URL'ye ekleyinhttp://localhost:port/movies.

    Aşağıdaki hatayı alırsanız:

    SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
    Login failed for user 'User-name'.
    

    Geçiş adımını kaçırdınız.

  2. Yeni Oluştur bağlantısını test edin.

    Sayfa oluştur

    Note

    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.

  3. Düzenle, Ayrıntılar ve Sil bağlantılarını test edin.

Sonraki öğreticide, yapı iskelesi tarafından oluşturulan dosyalar açıklanmaktadır.

Bağımlılık ekleme ile kaydedilen bağlamı inceleme

ASP.NET Core, bağımlılık ekleme ile oluşturulur. Veritabanı bağlamı EF Core gibi hizmetler, uygulama başlatma sırasında bağımlılık ekleme ile kaydedilir. Bu hizmetleri gerektiren bileşenler (Sayfalar gibi Razor ) oluşturucu parametreleri aracılığıyla sağlanır. Veritabanı bağlam örneğini alan oluşturucu kodu öğreticinin ilerleyen bölümlerinde gösterilir.

İskele aracı otomatik olarak bir veritabanı bağlamı oluşturup bağımlılık ekleme kapsayıcısıyla kaydetti. Aşağıdaki vurgulanmış kod, iskele tarafından dosyaya Program.cs eklenir:

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();

Tamamlanan örnekle ilgili sorun giderme

Çözemediğiniz bir sorunla karşılaşırsanız kodunuzu tamamlanmış projeyle karşılaştırın. Tamamlanan projeyi görüntüleme veya indirme (indirme).

Sonraki Adımlar

Bu öğreticide, bir veritabanındaki filmleri yönetmek için sınıflar eklenir. Uygulamanın model sınıfları, veritabanıyla çalışmak için Entity Framework Core (EF Core) kullanır. EF Core , veri erişimini basitleştiren bir nesne ilişkisel eşleyicidir (O/RM). Önce model sınıflarını yazar ve EF Core veritabanını oluşturur.

Model sınıfları, üzerinde bağımlılıkları olmadığından POCO sınıfları ("P) olarak bilinir. Veritabanında depolanan verilerin özelliklerini tanımlar.

Veri modeli ekleme

  1. Çözüm Gezgini'da RazorPagesMovie projesiNeni Klasör Ekle'ye> sağ tıklayın. klasörünü Modelsadlandırın.

  2. Klasöre Models sağ tıklayın. Sınıf>. Sınıfa Movie adını verin.

  3. 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.

  • ö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.

  1. yapı iskelesi aracı için gereken NuGet paketini Microsoft.EntityFrameworkCore.Designekleyin.

    1. Araçlar menüsünden
    2. Gözat sekmesini seçin.
    3. Girin Microsoft.EntityFrameworkCore.Design ve listeden seçin.
    4. Project'i denetledikten sonra Yükle'yi seçin
    5. Lisans Kabulü iletişim kutusunda Kabul Ediyorum'a tıklayın. NuGet Paket Yöneticisi - paket ekle
  2. Sayfalar/Filmler klasörünü oluşturun:

    1. Sayfalar klasörüne Yeni Klasör>>sağ tıklayın.
    2. Klasöre Filmler adını verin.
  3. Sayfalar/Filmler klasörünesağ tıklayın.>

    Yeni İskeleli Öğe

  4. Yeni İskele Ekle iletişim kutusunda Entity Framework (CRUD)Razor

    yapı iskelesi ekleme

  5. Razor kullanarak Sayfa Ekle iletişim kutusunu tamamlayın:

    1. Model sınıfı açılan listesinde Film (RazorPagesMovie.Models) öğesini seçin.
    2. Veri bağlamı sınıf satırında (artı) işaretini seçin + .
      1. Veri Bağlamı Ekle iletişim kutusunda sınıf adı RazorPagesMovie.Data.RazorPagesMovieContext oluşturulur.
    3. Add (Ekle) seçeneğini belirleyin.

    Sayfa Ekle Razor

    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.

Warning

Bu makalede, kullanıcının kimliğinin doğrulanması gerekmeyen bir yerel veritabanı kullanılır. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Dağıtılan test ve üretim uygulamaları için kimlik doğrulaması hakkında daha fazla bilgi için bkz . Güvenli kimlik doğrulama akışları.

Oluşturulan ve güncelleştirilen dosyalar

İskele işlemi aşağıdaki dosyaları oluşturur:

  • Sayfalar/Filmler: Oluşturma, Silme, Ayrıntılar, Düzenleme ve Dizin oluşturma.
  • Data/RazorPagesMovieContext.cs

Oluşturulan dosyalar sonraki öğreticide açıklanmıştır.

İskele işlemi dosyaya aşağıdaki vurgulanmış kodu Program.cs ekler:

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();

Değişiklikler Program.cs bu öğreticinin ilerleyen bölümlerinde açıklanmıştır.

EF'nin geçiş özelliğini kullanarak ilk veritabanı şemasını oluşturma

Entity Framework Core'daki geçişler özelliği şunları yapmak için bir yol sağlar:

  • İlk veritabanı şemasını oluşturun.
  • Veritabanı şemasını uygulamanın veri modeliyle eşitlenmiş durumda tutmak için artımlı olarak güncelleştirin. Veritabanındaki mevcut veriler korunur.

Bu bölümde, Paket Yöneticisi Konsolu (PMC) penceresi şunları yapmak için kullanılır:

  • İlk geçişi ekleyin.
  • Veritabanını ilk geçişle güncelleştirin.
  1. Araçlar menüsünde NuGet Paket Yöneticisi

    PMC menüsü

  2. PMC'de aşağıdaki komutları girin:

    Add-Migration InitialCreate
    Update-Database
    
    

Önceki komutlar Entity Framework Core araçlarını yükler ve komutunu çalıştırarak ilk veritabanı şemasını migrations oluşturan kodu oluşturur.

Sonraki bir adımda ele alınan aşağıdaki uyarı görüntülenir:

'Movie' varlık türündeki 'Price' ondalık sütunu için tür belirtilmedi. Bu, varsayılan duyarlığa ve ölçeklendirmeye uymayan değerlerin sessizce kesilmesine neden olur. 'HasColumnType()' kullanarak tüm değerleri barındırabilecek SQL server sütun türünü açıkça belirtin.

komutu, migrations ilk veritabanı şemasını oluşturmak için kod oluşturur. Şema, içinde DbContextbelirtilen modeli temel alır. Bağımsız InitialCreate değişken, geçişleri adlandırmak için kullanılır. Herhangi bir ad kullanılabilir, ancak kurala göre geçişi açıklayan bir ad seçilir.

komutu update , uygulanmamış geçişlerde yöntemini çalıştırır Up . Bu durumda, update veritabanını oluşturan dosyasında yöntemini Up çalıştırırMigrations/<time-stamp>_InitialCreate.cs.

Bağımlılık ekleme ile kaydedilen bağlamı inceleme

ASP.NET Core, bağımlılık ekleme ile oluşturulur. Veritabanı bağlamı EF Core gibi hizmetler, uygulama başlatma sırasında bağımlılık ekleme ile kaydedilir. Bu hizmetleri gerektiren bileşenler (Sayfalar gibi Razor ) oluşturucu parametreleri aracılığıyla sağlanır. Veritabanı bağlam örneğini alan oluşturucu kodu öğreticinin ilerleyen bölümlerinde gösterilir.

İskele aracı otomatik olarak bir veritabanı bağlamı oluşturup bağımlılık ekleme kapsayıcısıyla kaydetti. Aşağıdaki vurgulanmış kod, iskele tarafından dosyaya Program.cs eklenir:

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();

Veri bağlamı RazorPagesMovieContext:

  • Microsoft.EntityFrameworkCore.DbContext'ten türetilir.
  • Veri modeline hangi varlıkların dahil olduğunu belirtir.
  • EF Core Model için Oluşturma, Okuma, Güncelleştirme ve Silme gibi işlevleri koordine ederMovie.
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

  1. Uygulamayı çalıştırın ve tarayıcıda (/Movies) URL'ye ekleyinhttp://localhost:port/movies.

    Aşağıdaki hatayı alırsanız:

    SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
    Login failed for user 'User-name'.
    

    Geçiş adımını kaçırdınız.

  2. Yeni Oluştur bağlantısını test edin.

    Sayfa oluştur

    Note

    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.

  3. Düzenle, Ayrıntılar ve Sil bağlantılarını test edin.

Sonraki öğreticide, yapı iskelesi tarafından oluşturulan dosyalar açıklanmaktadır.

Tamamlanan örnekle ilgili sorun giderme

Çözemediğiniz bir sorunla karşılaşırsanız kodunuzu tamamlanmış projeyle karşılaştırın. Tamamlanan projeyi görüntüleme veya indirme (indirme).

Sonraki Adımlar

Bu bölümde, bir veritabanındaki filmleri yönetmek için sınıflar eklenir. Uygulamanın model sınıfları, veritabanıyla çalışmak için Entity Framework Core (EF Core) kullanır. EF Core , veri erişimini basitleştiren bir nesne ilişkisel eşleyicidir (O/RM). Önce model sınıflarını yazar ve EF Core veritabanını oluşturur.

Model sınıfları, üzerinde bağımlılıkları olmadığından POCO sınıfları ("P) olarak bilinir. Veritabanında depolanan verilerin özelliklerini tanımlar.

Örnek kodu görüntüleme veya indirme (indirme).

Veri modeli ekleme

  1. Çözüm Gezgini'da RazorPagesMovie projesiNeni Klasör Ekle'ye> sağ tıklayın. klasörünü Modelsadlandırın.

  2. Klasöre Models sağ tıklayın. Sınıf>. Sınıfa Movie adını verin.

  3. 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.

  1. Sayfalar/Filmler klasörü oluşturma:

    1. Sayfalar klasörüne Yeni Klasör>>sağ tıklayın.
    2. Klasöre Filmler adını verin.
  2. Sayfalar/Filmler klasörünesağ tıklayın.>

    Yeni İskeleli Öğe

  3. yapı iskelesi ekle iletişim kutusunda Entity Framework (CRUD)Razor

    yapı iskelesi ekleme

  4. Razor kullanarak Sayfa Ekle iletişim kutusunu tamamlayın:

    1. Model sınıfı açılan listesinde Film (RazorPagesMovie.Models) öğesini seçin.
    2. Veri bağlamı sınıf satırında (artı) işaretini seçin + .
      1. Veri Bağlamı Ekle iletişim kutusunda sınıf adı RazorPagesMovie.Data.RazorPagesMovieContext oluşturulur.
    3. Add (Ekle) seçeneğini belirleyin.

    Sayfa Ekle Razor

Dosyaappsettings.json, yerel veritabanına bağlanmak için kullanılan bağlantı dizesi güncelleştirilir.

Warning

Bu makalede, kullanıcının kimliğinin doğrulanması gerekmeyen bir yerel veritabanı kullanılır. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Dağıtılan test ve üretim uygulamaları için kimlik doğrulaması hakkında daha fazla bilgi için bkz . Güvenli kimlik doğrulama akışları.

Oluşturulan ve güncelleştirilen dosyalar

İskele işlemi aşağıdaki dosyaları oluşturur:

  • Sayfalar/Filmler: Oluşturma, Silme, Ayrıntılar, Düzenleme ve Dizin oluşturma.
  • Data/RazorPagesMovieContext.cs

Güncelleştirilmiş dosyalar

  • Startup.cs

Oluşturulan ve güncelleştirilen dosyalar sonraki bölümde açıklanmıştır.

EF'nin geçiş özelliğini kullanarak ilk veritabanı şemasını oluşturma

Entity Framework Core'daki geçişler özelliği şunları yapmak için bir yol sağlar:

  • İlk veritabanı şemasını oluşturun.
  • Veritabanı şemasını uygulamanın veri modeliyle eşitlenmiş durumda tutmak için artımlı olarak güncelleştirin. Veritabanındaki mevcut veriler korunur.

Bu bölümde, Paket Yöneticisi Konsolu (PMC) penceresi şunları yapmak için kullanılır:

  • İlk geçişi ekleyin.
  • Veritabanını ilk geçişle güncelleştirin.
  1. Araçlar menüsünde NuGet Paket Yöneticisi

    PMC menüsü

  2. PMC'de aşağıdaki komutları girin:

    Add-Migration InitialCreate
    Update-Database
    

SQL Server için, önceki komutlar şu uyarıyı oluşturur: "'Movie' varlık türündeki 'Price' ondalık sütunu için tür belirtilmedi. Bu, varsayılan duyarlığa ve ölçeklendirmeye uymayan değerlerin sessizce kesilmesine neden olur. 'HasColumnType()' kullanarak tüm değerleri barındırabilecek SQL server sütun türünü açıkça belirtin."

Sonraki bir adımda ele alınacağı için uyarıyı yoksayın.

komutu, migrations ilk veritabanı şemasını oluşturmak için kod oluşturur. Şema, içinde DbContextbelirtilen modeli temel alır. Bağımsız InitialCreate değişken, geçişleri adlandırmak için kullanılır. Herhangi bir ad kullanılabilir, ancak kurala göre geçişi açıklayan bir ad seçilir.

komutu update , uygulanmamış geçişlerde yöntemini çalıştırır Up . Bu durumda, update veritabanını oluşturan dosyasında yöntemini Up çalıştırırMigrations/<time-stamp>_InitialCreate.cs.

Bağımlılık ekleme ile kaydedilen bağlamı inceleme

ASP.NET Core, bağımlılık ekleme ile oluşturulur. Veritabanı bağlamı EF Core gibi hizmetler, uygulama başlatma sırasında bağımlılık ekleme ile kaydedilir. Bu hizmetleri gerektiren bileşenler (Sayfalar gibi Razor ) oluşturucu parametreleri aracılığıyla sağlanır. Veritabanı bağlam örneğini alan oluşturucu kodu öğreticinin ilerleyen bölümlerinde gösterilir.

İskele aracı otomatik olarak bir veritabanı bağlamı oluşturup bağımlılık ekleme kapsayıcısıyla kaydetti.

Startup.ConfigureServices yöntemini inceleyin. Vurgulanan çizgi iskele tarafından eklendi:

public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages();

    services.AddDbContext<RazorPagesMovieContext>(options =>
      options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));
}

RazorPagesMovieContext Model için EF Core Oluşturma, Okuma, Güncelleştirme ve Silme gibi koordinat Movie işlevselliği. Veri bağlamı (RazorPagesMovieContext), Microsoft.EntityFrameworkCore.DbContext'ten türetilir. Veri bağlamı, veri modeline hangi varlıkların dahil olduğunu belirtir.

using Microsoft.EntityFrameworkCore;

namespace RazorPagesMovie.Data
{
    public class RazorPagesMovieContext : DbContext
    {
        public RazorPagesMovieContext (
            DbContextOptions<RazorPagesMovieContext> options)
            : base(options)
        {
        }

        public DbSet<RazorPagesMovie.Models.Movie> Movie { get; set; }
    }
}

Yukarıdaki kod, varlık kümesi için bir DbSet<Movie> özelliği oluşturur. Entity Framework terminolojisinde bir varlık kümesi genellikle bir veritabanı tablosuna karşılık gelir. Varlık, tablodaki bir satıra karşılık gelir.

bağlantı dizesi adı, DbContextOptions nesnesinde bir yöntem çağrılarak bağlama geçirilir. Yerel geliştirme için Yapılandırma sistemi dosyadan appsettings.json bağlantı dizesi okur.

Uygulamayı test etme

  1. Uygulamayı çalıştırın ve tarayıcıda (/Movies) URL'ye ekleyinhttp://localhost:port/movies.

    Aşağıdaki hatayı alırsanız:

    SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
    Login failed for user 'User-name'.
    

    Geçiş adımını kaçırdınız.

  2. Oluştur bağlantısını test edin.

    Sayfa oluştur

    Note

    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.

  3. Düzenle, Ayrıntılar ve Sil bağlantılarını test edin.

Entity Framework Core'un SQL Günlüğü

Günlük yapılandırması genellikle Logging dosyalarının appsettings.{Environment}.json bölümü tarafından sağlanır. SQL deyimlerini günlüğe kaydetmek için "Microsoft.EntityFrameworkCore.Database.Command": "Information" dosyasına ekleyinappsettings.Development.json:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyDB-2;Trusted_Connection=True;MultipleActiveResultSets=true"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
     ,"Microsoft.EntityFrameworkCore.Database.Command": "Information"
    }
  },
  "AllowedHosts": "*"
}

Yukarıdaki JSON ile, SQL deyimleri komut satırında ve Visual Studio çıkış penceresinde görüntülenir.

Daha fazla bilgi için bkz . .NET ve ASP.NET Core'da oturum açma ve bu GitHub sorunu.

Sonraki öğreticide, yapı iskelesi tarafından oluşturulan dosyalar açıklanmaktadır.

Sonraki Adımlar

Bu bölümde, filmleri yönetmek için sınıflar eklenir. Uygulamanın model sınıfları, veritabanıyla çalışmak için Entity Framework Core (EF Core) kullanır. EF Core , veri erişimini basitleştiren bir nesne ilişkisel eşleyicidir (O/RM).

Model sınıfları, üzerinde EF Coreherhangi bir bağımlılığı olmadığından POCO sınıfları ("düz eski CLR nesnelerinden") olarak bilinir. Veritabanında depolanan verilerin özelliklerini tanımlar.

Örnek kodu görüntüleme veya indirme (indirme).

Warning

Bu makalede, kullanıcının kimliğinin doğrulanması gerekmeyen bir yerel veritabanı kullanılır. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Dağıtılan test ve üretim uygulamaları için kimlik doğrulaması hakkında daha fazla bilgi için bkz . Güvenli kimlik doğrulama akışları.

Veri modeli ekleme

RazorPagesMovie projesiNeni Klasör Ekle'ye> klasörünü Modelsadlandırın.

Klasöre Models sağ tıklayın. Sınıf>. Sınıfa Movie adını verin.

Sınıfına aşağıdaki özellikleri Movie ekleyin:

using System;
using System.ComponentModel.DataAnnotations;

namespace RazorPagesMovie.Models
{
    public class Movie
    {
        public int ID { get; set; }
        public string Title { get; set; }

        [DataType(DataType.Date)]
        public DateTime ReleaseDate { get; set; }
        public string Genre { get; set; }
        public decimal Price { get; set; }
    }
}

sınıfı aşağıdakileri Movie içerir:

  • Bu 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>>sağ tıklayın.
  • Klasöre Filmler adını verin.

Sayfalar/Filmler klasörünesağ tıklayın.>

VScode'da Yeni İskeleli Öğe

yapı iskelesi ekle iletişim kutusunda Entity Framework (CRUD)Razor

VScode'da yapı iskelesi ekleme

Razor kullanarak Sayfa Ekle iletişim kutusunu tamamlayın:

  • Model sınıfı açılan listesinde Film (RazorPagesMovie.Models) öğesini seçin.
  • Veri bağlamı sınıfı satırında (artı) işaretini seçin + ve RazorPagesMovie.Models. RazorPagesMovieContext to RazorPagesMovie.Veriler. RazorPagesMovieContext. Bu değişiklik gerekli değildir. Doğru ad alanına sahip veritabanı bağlam sınıfını oluşturur.
  • Add (Ekle) seçeneğini belirleyin.

VScode'da Sayfa Ekleme Razor

Dosyaappsettings.json, yerel veritabanına bağlanmak için kullanılan bağlantı dizesi güncelleştirilir.

Oluşturulan dosyalar

İskele işlemi aşağıdaki dosyaları oluşturur ve güncelleştirir:

  • Sayfalar/Filmler: Oluşturma, Silme, Ayrıntılar, Düzenleme ve Dizin oluşturma.
  • Data/RazorPagesMovieContext.cs

Updated

  • Startup.cs

Oluşturulan ve güncelleştirilen dosyalar sonraki bölümde açıklanmıştır.

İlk geçiş

Bu bölümde, Paket Yöneticisi Konsolu (PMC) şunları yapmak için kullanılır:

  • İlk geçişi ekleyin.
  • Veritabanını ilk geçişle güncelleştirin.

Araçlar menüsünde NuGet Paket Yöneticisi

PMC menüsü

PMC'de aşağıdaki komutları girin:

Add-Migration InitialCreate
Update-Database

Yukarıdaki komutlar şu uyarıyı oluşturur: "'Movie' varlık türündeki 'Price' ondalık sütunu için tür belirtilmedi. Bu, varsayılan duyarlığa ve ölçeklendirmeye uymayan değerlerin sessizce kesilmesine neden olur. 'HasColumnType()' kullanarak tüm değerleri barındırabilecek SQL server sütun türünü açıkça belirtin."

Sonraki bir adımda ele alınacağı için uyarıyı yoksayın.

Migrations komutu, ilk veritabanı şemasını oluşturmak için kod oluşturur. Şema, içinde DbContextbelirtilen modeli temel alır. Bağımsız InitialCreate değişken, geçişleri adlandırmak için kullanılır. Herhangi bir ad kullanılabilir, ancak kurala göre geçişi açıklayan bir ad seçilir.

komutu update , uygulanmamış geçişlerde yöntemini çalıştırır Up . Bu durumda, update veritabanını oluşturan dosyasında yöntemini Up çalıştırırMigrations/<time-stamp>_InitialCreate.cs.

Bağımlılık ekleme ile kaydedilen bağlamı inceleme

ASP.NET Core, bağımlılık ekleme ile oluşturulur. Veritabanı bağlamı EF Core gibi hizmetler, uygulama başlatma sırasında bağımlılık ekleme ile kaydedilir. Sayfalar gibi Razor bu hizmetleri gerektiren bileşenler oluşturucu parametreleri aracılığıyla sağlanır. Veritabanı bağlam örneğini alan oluşturucu kodu öğreticinin ilerleyen bölümlerinde gösterilir.

İskele aracı otomatik olarak bir veritabanı bağlamı oluşturup bağımlılık ekleme kapsayıcısıyla kaydetti.

Startup.ConfigureServices yöntemini inceleyin. Vurgulanan çizgi iskele tarafından eklendi:

public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages();

    services.AddDbContext<RazorPagesMovieContext>(options =>
      options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));
}

RazorPagesMovieContext Model için EF Core Oluşturma, Okuma, Güncelleştirme ve Silme gibi koordinat Movie işlevselliği. Veri bağlamı (RazorPagesMovieContext), Microsoft.EntityFrameworkCore.DbContext'ten türetilir. Veri bağlamı, veri modeline hangi varlıkların dahil olduğunu belirtir.

using Microsoft.EntityFrameworkCore;

namespace RazorPagesMovie.Data
{
    public class RazorPagesMovieContext : DbContext
    {
        public RazorPagesMovieContext (
            DbContextOptions<RazorPagesMovieContext> options)
            : base(options)
        {
        }

        public DbSet<RazorPagesMovie.Models.Movie> Movie { get; set; }
    }
}

Yukarıdaki kod, varlık kümesi için bir DbSet<Movie> özelliği oluşturur. Entity Framework terminolojisinde bir varlık kümesi genellikle bir veritabanı tablosuna karşılık gelir. Varlık, tablodaki bir satıra karşılık gelir.

bağlantı dizesi adı, DbContextOptions nesnesinde bir yöntem çağrılarak bağlama geçirilir. Yerel geliştirme için Yapılandırma sistemi dosyadan appsettings.json bağlantı dizesi okur.

Uygulamayı test etme

  • Uygulamayı çalıştırın ve tarayıcıda (/Movies) URL'ye ekleyinhttp://localhost:port/movies.

Şu hatayı alabilirsiniz:

SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
Login failed for user 'User-name'.

Geçiş adımını kaçırdınız.

  • Oluştur bağlantısını test edin.

    Sayfa oluştur

    Note

    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