Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Catatan
Ini bukan versi terbaru dari artikel ini. Untuk rilis saat ini, lihat versi .NET 10 dari artikel ini.
Peringatan
Versi ASP.NET Core ini tidak lagi didukung. Untuk informasi selengkapnya, lihat Kebijakan Dukungan .NET dan .NET Core. Untuk rilis saat ini, lihat versi .NET 9 dari artikel ini.
Oleh Rick Anderson dan Jon P Smith.
Pendahuluan
Bagian seri tutorial ini berfokus pada bekerja dengan database SQL di aplikasi MVC Core ASP.NET Anda.
Anda akan mempelajari cara:
- Daftarkan dan konfigurasikan konteks database Entity Framework Core untuk aplikasi MVC Core ASP.NET Anda.
- Bekerja dengan string koneksi database untuk pengembangan lokal.
- Gunakan SQL Server Express LocalDB untuk pengembangan dan memeriksa database dan data Anda menggunakan SQL Server Object Explorer.
- Isi database Anda dengan data contoh awal.
Prasyarat
Tutorial ini menggunakan database yang Anda siapkan di langkah sebelumnya: Bagian 4, tambahkan model ke aplikasi MVC Inti ASP.NET.
Bekerja dengan konteks database
Objek MvcMovieContext menangani tugas menyambungkan ke database dan memetakan Movie objek ke rekaman database. Konteks database didaftarkan dengan kontainer Dependency Injection dalam file Program.cs.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext") ?? throw new InvalidOperationException("Connection string 'MvcMovieContext' not found.")));
Sistem Konfigurasi Inti ASP.NET membaca ConnectionString kunci. Untuk pengembangan lokal, ia mendapatkan string koneksi dari appsettings.json file:
"ConnectionStrings": {
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-4ebefa10-de29-4dea-b2ad-8a8dc6bcf374;Trusted_Connection=True;MultipleActiveResultSets=true"
}
Peringatan
Artikel ini menggunakan database lokal yang tidak mengharuskan pengguna untuk diautentikasi. Aplikasi produksi harus menggunakan alur autentikasi paling aman yang tersedia. Untuk informasi selengkapnya tentang autentikasi untuk aplikasi pengujian dan produksi yang disebarkan, lihat Mengamankan alur autentikasi.
LocalDB SQL Server Express
LocalDB:
- Adalah versi ringan dari SQL Server Express Database Engine, yang diinstal secara default dengan Visual Studio.
- Mulai sesuai permintaan dengan menggunakan string koneksi.
- Ditargetkan untuk pengembangan program. Ini berjalan dalam mode pengguna, sehingga tidak ada konfigurasi yang kompleks.
- Secara default membuat file .mdf di direktori C:/Users/{user} .
Memeriksa database
Dari menu Tampilan, buka SQL Server Object Explorer (SSOX).
Klik kanan pada Movie tabel (dbo.Movie) > View Designer
Perhatikan ikon kunci di samping ID. Secara default, EF membuat properti bernama ID kunci utama.
Klik kanan pada Movie tabel > Tampilkan Data
>
Isi basis data
Buat kelas baru bernama SeedData di folder Model . Ganti kode yang dihasilkan dengan yang berikut ini:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;
namespace MvcMovie.Models;
public static class SeedData
{
public static void Initialize(IServiceProvider serviceProvider)
{
using (var context = new MvcMovieContext(
serviceProvider.GetRequiredService<
DbContextOptions<MvcMovieContext>>()))
{
// Look for any movies.
if (context.Movie.Any())
{
return; // DB has been seeded
}
context.Movie.AddRange(
new Movie
{
Title = "When Harry Met Sally",
ReleaseDate = DateTime.Parse("1989-2-12"),
Genre = "Romantic Comedy",
Price = 7.99M
},
new Movie
{
Title = "Ghostbusters ",
ReleaseDate = DateTime.Parse("1984-3-13"),
Genre = "Comedy",
Price = 8.99M
},
new Movie
{
Title = "Ghostbusters 2",
ReleaseDate = DateTime.Parse("1986-2-23"),
Genre = "Comedy",
Price = 9.99M
},
new Movie
{
Title = "Rio Bravo",
ReleaseDate = DateTime.Parse("1959-4-15"),
Genre = "Western",
Price = 3.99M
}
);
context.SaveChanges();
}
}
}
Jika ada film dalam database, penginisialisasi awal akan menghentikan proses dan tidak ada film yang ditambahkan.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Menambahkan penginisialisasi benih
Ganti isi Program.cs dengan kode berikut. Kode baru disorot.
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using MvcMovie.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext") ?? throw new InvalidOperationException("Connection string 'MvcMovieContext' not found.")));
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
using (var scope = app.Services.CreateScope())
{
var services = scope.ServiceProvider;
SeedData.Initialize(services);
}
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/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.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
Hapus semua rekaman dalam database. Anda dapat melakukan ini dengan tautan penghapusan di browser atau dari SSOX.
Menguji aplikasi. Paksa aplikasi untuk mulai diinisialisasi, memanggil kode dalam file Program.cs, sehingga metode seed berjalan. Untuk memaksa inisialisasi, tutup jendela prompt perintah yang dibuka Visual Studio, dan mulai ulang dengan menekan Ctrl+F5.
Aplikasi ini menunjukkan data seeded.
Pendahuluan
Bagian seri tutorial ini berfokus pada bekerja dengan database SQL di aplikasi MVC Core ASP.NET Anda.
Anda akan mempelajari cara:
- Daftarkan dan konfigurasikan konteks database Entity Framework Core untuk aplikasi MVC Core ASP.NET Anda.
- Bekerja dengan koneksi string database untuk pengembangan lokal.
- Gunakan SQL Server Express LocalDB untuk pengembangan dan memeriksa database dan data Anda menggunakan SQL Server Object Explorer.
- Mulailah dengan mengisi database Anda dengan data sampel awal.
Prasyarat
Tutorial ini menggunakan database yang Anda siapkan di langkah sebelumnya: Bagian 4, tambahkan model ke aplikasi MVC Inti ASP.NET.
Bekerja dengan konteks database
Objek MvcMovieContext menangani tugas menyambungkan ke database dan memetakan Movie objek ke rekaman database. Konteks database didaftarkan dengan kontainer Dependency Injection dalam file Program.cs.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
Sistem Konfigurasi Inti ASP.NET membaca ConnectionString kunci. Untuk pengembangan lokal, ia mendapatkan string koneksi dari appsettings.json file:
"ConnectionStrings": {
"MvcMovieContext": "Data Source=MvcMovieContext-ea7a4069-f366-4742-bd1c-3f753a804ce1.db"
}
Peringatan
Artikel ini menggunakan database lokal yang tidak mengharuskan pengguna untuk diautentikasi. Aplikasi produksi harus menggunakan alur autentikasi paling aman yang tersedia. Untuk informasi selengkapnya tentang autentikasi untuk aplikasi pengujian dan produksi yang disebarkan, lihat Mengamankan alur autentikasi.
LocalDB SQL Server Express
LocalDB:
- Adalah versi ringan dari SQL Server Express Database Engine, yang diinstal secara default dengan Visual Studio.
- Mulai sesuai permintaan dengan menggunakan string koneksi.
- Ditargetkan untuk pengembangan program. Ini berjalan dalam mode pengguna, sehingga tidak ada konfigurasi yang kompleks.
- Secara default membuat file .mdf di direktori C:/Users/{user} .
Memeriksa database
Dari menu Tampilan, buka SQL Server Object Explorer (SSOX).
Klik kanan pada Movie tabel (dbo.Movie) > View Designer
Perhatikan ikon kunci di samping ID. Secara default, EF membuat properti bernama ID kunci utama.
Klik kanan pada Movie tabel > Tampilkan Data
>
Isi basis data
Buat kelas baru bernama SeedData di folder Model . Ganti kode yang dihasilkan dengan yang berikut ini:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;
namespace MvcMovie.Models;
public static class SeedData
{
public static void Initialize(IServiceProvider serviceProvider)
{
using (var context = new MvcMovieContext(
serviceProvider.GetRequiredService<
DbContextOptions<MvcMovieContext>>()))
{
// Look for any movies.
if (context.Movie.Any())
{
return; // DB has been seeded
}
context.Movie.AddRange(
new Movie
{
Title = "When Harry Met Sally",
ReleaseDate = DateTime.Parse("1989-2-12"),
Genre = "Romantic Comedy",
Price = 7.99M
},
new Movie
{
Title = "Ghostbusters ",
ReleaseDate = DateTime.Parse("1984-3-13"),
Genre = "Comedy",
Price = 8.99M
},
new Movie
{
Title = "Ghostbusters 2",
ReleaseDate = DateTime.Parse("1986-2-23"),
Genre = "Comedy",
Price = 9.99M
},
new Movie
{
Title = "Rio Bravo",
ReleaseDate = DateTime.Parse("1959-4-15"),
Genre = "Western",
Price = 3.99M
}
);
context.SaveChanges();
}
}
}
Jika ada film dalam database, penginisialisasi awal akan menghentikan proses dan tidak ada film yang ditambahkan.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Menambahkan penginisialisasi benih
Ganti isi Program.cs dengan kode berikut. Kode baru disorot.
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using MvcMovie.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
using (var scope = app.Services.CreateScope())
{
var services = scope.ServiceProvider;
SeedData.Initialize(services);
}
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/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.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
Hapus semua rekaman dalam database. Anda dapat melakukan ini dengan tautan penghapusan di browser atau dari SSOX.
Menguji aplikasi. Paksa aplikasi untuk mulai diinisialisasi, memanggil kode dalam file Program.cs, sehingga metode seed berjalan. Untuk memaksa inisialisasi, tutup jendela prompt perintah yang dibuka Visual Studio, dan mulai ulang dengan menekan Ctrl+F5.
Aplikasi ini menunjukkan data seeded.
Pendahuluan
Bagian seri tutorial ini berfokus pada bekerja dengan database SQL di aplikasi MVC Core ASP.NET Anda.
Anda akan mempelajari cara:
- Daftarkan dan konfigurasikan konteks database Entity Framework Core untuk aplikasi MVC Core ASP.NET Anda.
- Bekerja dengan string koneksi database untuk pengembangan lokal.
- Gunakan SQL Server Express LocalDB untuk pengembangan dan memeriksa database dan data Anda menggunakan SQL Server Object Explorer.
- Isi basis data Anda dengan data sampel awal.
Prasyarat
Tutorial ini menggunakan database yang Anda siapkan di langkah sebelumnya: Bagian 4, tambahkan model ke aplikasi MVC Inti ASP.NET.
Bekerja dengan konteks database
Objek MvcMovieContext menangani tugas menyambungkan ke database dan memetakan Movie objek ke rekaman database. Konteks database didaftarkan dengan kontainer Dependency Injection dalam file Program.cs.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
Sistem Konfigurasi Inti ASP.NET membaca ConnectionString kunci. Untuk pengembangan lokal, ia mendapatkan string koneksi dari appsettings.json file:
"ConnectionStrings": {
"MvcMovieContext": "Data Source=MvcMovieContext-ea7a4069-f366-4742-bd1c-3f753a804ce1.db"
}
Peringatan
Artikel ini menggunakan database lokal yang tidak mengharuskan pengguna untuk diautentikasi. Aplikasi produksi harus menggunakan alur autentikasi paling aman yang tersedia. Untuk informasi selengkapnya tentang autentikasi untuk aplikasi pengujian dan produksi yang disebarkan, lihat Mengamankan alur autentikasi.
LocalDB SQL Server Express
LocalDB:
- Adalah versi ringan dari SQL Server Express Database Engine, yang diinstal secara default dengan Visual Studio.
- Mulai sesuai permintaan dengan menggunakan string koneksi.
- Ditargetkan untuk pengembangan program. Ini berjalan dalam mode pengguna, sehingga tidak ada konfigurasi yang kompleks.
- Secara default membuat file .mdf di direktori C:/Users/{user} .
Memeriksa database
Dari menu Tampilan, buka SQL Server Object Explorer (SSOX).
Klik kanan pada Movie tabel (dbo.Movie) > View Designer
Perhatikan ikon kunci di samping ID. Secara default, EF membuat properti bernama ID kunci utama.
Klik kanan pada Movie tabel > Tampilkan Data
>
Isi basis data
Buat kelas baru bernama SeedData di folder Model . Ganti kode yang dihasilkan dengan yang berikut ini:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;
namespace MvcMovie.Models;
public static class SeedData
{
public static void Initialize(IServiceProvider serviceProvider)
{
using (var context = new MvcMovieContext(
serviceProvider.GetRequiredService<
DbContextOptions<MvcMovieContext>>()))
{
// Look for any movies.
if (context.Movie.Any())
{
return; // DB has been seeded
}
context.Movie.AddRange(
new Movie
{
Title = "When Harry Met Sally",
ReleaseDate = DateTime.Parse("1989-2-12"),
Genre = "Romantic Comedy",
Price = 7.99M
},
new Movie
{
Title = "Ghostbusters ",
ReleaseDate = DateTime.Parse("1984-3-13"),
Genre = "Comedy",
Price = 8.99M
},
new Movie
{
Title = "Ghostbusters 2",
ReleaseDate = DateTime.Parse("1986-2-23"),
Genre = "Comedy",
Price = 9.99M
},
new Movie
{
Title = "Rio Bravo",
ReleaseDate = DateTime.Parse("1959-4-15"),
Genre = "Western",
Price = 3.99M
}
);
context.SaveChanges();
}
}
}
Jika ada film dalam database, penginisialisasi awal akan menghentikan proses dan tidak ada film yang ditambahkan.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
<a name=snippet_"si">
Menambahkan penginisialisasi benih
Ganti isi Program.cs dengan kode berikut. Kode baru disorot.
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using MvcMovie.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
using (var scope = app.Services.CreateScope())
{
var services = scope.ServiceProvider;
SeedData.Initialize(services);
}
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/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.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
Hapus semua rekaman dalam database. Anda dapat melakukan ini dengan tautan penghapusan di browser atau dari SSOX.
Menguji aplikasi. Paksa aplikasi untuk mulai diinisialisasi, memanggil kode dalam file Program.cs, sehingga metode seed berjalan. Untuk memaksa inisialisasi, tutup jendela prompt perintah yang dibuka Visual Studio, dan mulai ulang dengan menekan Ctrl+F5.
Aplikasi ini menunjukkan data seeded.
Pendahuluan
Bagian seri tutorial ini berfokus pada bekerja dengan database SQL di aplikasi MVC Core ASP.NET Anda.
Anda akan mempelajari cara:
- Daftarkan dan konfigurasikan konteks database Entity Framework Core untuk aplikasi MVC Core ASP.NET Anda.
- Bekerja dengan string koneksi database untuk pengembangan lokal.
- Gunakan SQL Server Express LocalDB untuk pengembangan dan memeriksa database dan data Anda menggunakan SQL Server Object Explorer.
- Isi database Anda dengan data sampel awal.
Prasyarat
Tutorial ini menggunakan database yang Anda siapkan di langkah sebelumnya: Bagian 4, tambahkan model ke aplikasi MVC Inti ASP.NET.
Bekerja dengan konteks database
Objek MvcMovieContext menangani tugas menyambungkan ke database dan memetakan Movie objek ke rekaman database. Konteks database didaftarkan dengan kontainer Dependency Injection dalam file Program.cs.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
Sistem Konfigurasi Inti ASP.NET membaca ConnectionString kunci. Untuk pengembangan lokal, ia mendapatkan string koneksi dari appsettings.json file:
"ConnectionStrings": {
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-7dc5;Trusted_Connection=True;MultipleActiveResultSets=true"
}
Peringatan
Artikel ini menggunakan database lokal yang tidak mengharuskan pengguna untuk diautentikasi. Aplikasi produksi harus menggunakan alur autentikasi paling aman yang tersedia. Untuk informasi selengkapnya tentang autentikasi untuk aplikasi pengujian dan produksi yang disebarkan, lihat Mengamankan alur autentikasi.
LocalDB SQL Server Express
LocalDB:
- Adalah versi ringan dari SQL Server Express Database Engine, yang diinstal secara default dengan Visual Studio.
- Mulai sesuai permintaan dengan menggunakan string koneksi.
- Ditargetkan untuk pengembangan program. Ini berjalan dalam mode pengguna, sehingga tidak ada konfigurasi yang kompleks.
- Secara default membuat file .mdf di direktori C:/Users/{user} .
Isi basis data
Buat kelas baru bernama SeedData di folder Model . Ganti kode yang dihasilkan dengan yang berikut ini:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;
namespace MvcMovie.Models
{
public static class SeedData
{
public static void Initialize(IServiceProvider serviceProvider)
{
using (var context = new MvcMovieContext(
serviceProvider.GetRequiredService<
DbContextOptions<MvcMovieContext>>()))
{
// Look for any movies.
if (context.Movie.Any())
{
return; // DB has been seeded
}
context.Movie.AddRange(
new Movie
{
Title = "When Harry Met Sally",
ReleaseDate = DateTime.Parse("1989-2-12"),
Genre = "Romantic Comedy",
Price = 7.99M
},
new Movie
{
Title = "Ghostbusters ",
ReleaseDate = DateTime.Parse("1984-3-13"),
Genre = "Comedy",
Price = 8.99M
},
new Movie
{
Title = "Ghostbusters 2",
ReleaseDate = DateTime.Parse("1986-2-23"),
Genre = "Comedy",
Price = 9.99M
},
new Movie
{
Title = "Rio Bravo",
ReleaseDate = DateTime.Parse("1959-4-15"),
Genre = "Western",
Price = 3.99M
}
);
context.SaveChanges();
}
}
}
}
Jika ada film dalam database, penginisialisasi awal akan menghentikan proses dan tidak ada film yang ditambahkan.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Menambahkan penginisialisasi benih
Ganti isi Program.cs dengan kode berikut. Kode baru disorot.
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using MvcMovie.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
using (var scope = app.Services.CreateScope())
{
var services = scope.ServiceProvider;
SeedData.Initialize(services);
}
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/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.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
Hapus semua rekaman dalam database. Anda dapat melakukan ini dengan tautan penghapusan di browser atau dari SSOX.
Menguji aplikasi. Paksa aplikasi untuk mulai diinisialisasi, memanggil kode dalam file Program.cs, sehingga metode seed berjalan. Untuk memaksa inisialisasi, tutup jendela prompt perintah yang dibuka Visual Studio, dan mulai ulang dengan menekan Ctrl+F5.
Aplikasi ini menunjukkan data seeded.
Pendahuluan
Bagian seri tutorial ini berfokus pada bekerja dengan database SQL di aplikasi MVC Core ASP.NET Anda.
Anda akan mempelajari cara:
- Daftarkan dan konfigurasikan konteks database Entity Framework Core untuk aplikasi MVC Core ASP.NET Anda.
- Bekerja dengan string koneksi database untuk pengembangan lokal.
- Gunakan SQL Server Express LocalDB untuk pengembangan dan memeriksa database dan data Anda menggunakan SQL Server Object Explorer.
- Isi database Anda dengan data sampel awal.
Prasyarat
Tutorial ini menggunakan database yang Anda siapkan di langkah sebelumnya: Bagian 4, tambahkan model ke aplikasi MVC Inti ASP.NET.
Bekerja dengan konteks database
Objek MvcMovieContext menangani tugas menyambungkan ke database dan memetakan Movie objek ke rekaman database. Konteks database terdaftar dengan Injeksi Dependensi kontainer dalam ConfigureServices metode dalam Startup.cs file:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MvcMovieContext")));
}
Sistem Konfigurasi Inti ASP.NET membaca ConnectionString kunci. Untuk pengembangan lokal, ia mendapatkan string koneksi dari appsettings.json file:
"ConnectionStrings": {
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-2;Trusted_Connection=True;MultipleActiveResultSets=true"
}
Peringatan
Artikel ini menggunakan database lokal yang tidak mengharuskan pengguna untuk diautentikasi. Aplikasi produksi harus menggunakan alur autentikasi paling aman yang tersedia. Untuk informasi selengkapnya tentang autentikasi untuk aplikasi pengujian dan produksi yang disebarkan, lihat Mengamankan alur autentikasi.
LocalDB SQL Server Express
LocalDB:
- Adalah versi ringan dari SQL Server Express Database Engine, yang diinstal secara default dengan Visual Studio.
- Mulai sesuai permintaan dengan menggunakan string koneksi.
- Ditargetkan untuk pengembangan program. Ini berjalan dalam mode pengguna, sehingga tidak ada konfigurasi yang kompleks.
- Secara default membuat file .mdf di direktori C:/Users/{user} .
Memeriksa database
Dari menu Tampilan, buka SQL Server Object Explorer (SSOX).
Klik kanan pada Movie tabel > Perancang Tampilan
Perhatikan ikon kunci di samping ID. Secara default, EF membuat properti bernama ID kunci utama.
Klik kanan pada Movie tabel > Tampilkan Data
Isi basis data
Buat kelas baru bernama SeedData di folder Model . Ganti kode yang dihasilkan dengan yang berikut ini:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;
namespace MvcMovie.Models
{
public static class SeedData
{
public static void Initialize(IServiceProvider serviceProvider)
{
using (var context = new MvcMovieContext(
serviceProvider.GetRequiredService<
DbContextOptions<MvcMovieContext>>()))
{
// Look for any movies.
if (context.Movie.Any())
{
return; // DB has been seeded
}
context.Movie.AddRange(
new Movie
{
Title = "When Harry Met Sally",
ReleaseDate = DateTime.Parse("1989-2-12"),
Genre = "Romantic Comedy",
Price = 7.99M
},
new Movie
{
Title = "Ghostbusters ",
ReleaseDate = DateTime.Parse("1984-3-13"),
Genre = "Comedy",
Price = 8.99M
},
new Movie
{
Title = "Ghostbusters 2",
ReleaseDate = DateTime.Parse("1986-2-23"),
Genre = "Comedy",
Price = 9.99M
},
new Movie
{
Title = "Rio Bravo",
ReleaseDate = DateTime.Parse("1959-4-15"),
Genre = "Western",
Price = 3.99M
}
);
context.SaveChanges();
}
}
}
}
Jika ada film dalam database, penginisialisasi awal akan menghentikan proses dan tidak ada film yang ditambahkan.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Menambahkan penginisialisasi benih
Ganti isi Program.cs dengan kode berikut:
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using MvcMovie.Data;
using MvcMovie.Models;
using System;
namespace MvcMovie
{
public class Program
{
public static void Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
SeedData.Initialize(services);
}
catch (Exception ex)
{
var logger = services.GetRequiredService<ILogger<Program>>();
logger.LogError(ex, "An error occurred seeding the DB.");
}
}
host.Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
Menguji aplikasi.
Hapus semua rekaman dalam database. Anda dapat melakukan ini dengan tautan penghapusan di browser atau dari SSOX.
Paksa aplikasi untuk menginisialisasi, memanggil metode kelas di Startup, agar metode seed dapat dijalankan. Untuk memaksa inisialisasi, IIS Express harus dihentikan dan dimulai ulang. Anda dapat melakukan ini dengan salah satu pendekatan berikut:
Klik kanan ikon baki sistem IIS Express di area pemberitahuan dan ketuk Keluar atau Hentikan Situs:
- Jika Anda menjalankan VS dalam mode non-debug, tekan F5 untuk menjalankan dalam mode debug
- Jika Anda menjalankan VS dalam mode debug, hentikan debugger dan tekan F5
Aplikasi ini menunjukkan data seeded.
ASP.NET Core