記事詳細


投稿日
2026年05月07日23時43分
タイトル

ASP.NET mvc: VisualStudioのプロジェクトです。アプリ起動時に、作成したデータベースにEntity Framework(10.0)を使ってDBContextクラス内からデータを挿入するコードのサンプルはありますか?

内容

はい、可能です。
ASP.NET MVC(.NET Framework または .NET Core)で アプリ起動時に Entity Framework を使ってデータベースへ初期データを挿入する場合、
DbContext と シード処理を組み合わせるのが一般的です。

以下は Entity Framework 6 / 10(EF Core 10) どちらでも応用できるサンプルです。
(ここでは EF Core 10 を想定しています)

① DbContext クラスの定義

Csharp
using Microsoft.EntityFrameworkCore; public class AppDbContext : DbContext { public DbSet<User> Users { get; set; } public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { } // モデル構成 protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); // 起動時に挿入する初期データ(HasData) modelBuilder.Entity<User>().HasData( new User { Id = 1, Name = "Admin", Email = "admin@example.com" }, new User { Id = 2, Name = "Guest", Email = "guest@example.com" } ); } }

② モデルクラス

Csharp
public class User { public int Id { get; set; } public string Name { get; set; } public string Email { get; set; } }

③ アプリ起動時に DB を作成&マイグレーション適用

ASP.NET Core MVC の場合は Program.cs または Startup.cs に以下を追加します。

Csharp
var builder = WebApplication.CreateBuilder(args); // DbContext 登録 builder.Services.AddDbContext<AppDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"))); var app = builder.Build(); // 起動時に DB 作成&マイグレーション適用 using (var scope = app.Services.CreateScope()) { var db = scope.ServiceProvider.GetRequiredService<AppDbContext>(); db.Database.Migrate(); // DB作成&マイグレーション } app.MapDefaultControllerRoute(); app.Run();

④ appsettings.json の接続文字列例

Json
{ "ConnectionStrings": { "DefaultConnection": "Server=localhost;Database=MyAppDb;Trusted_Connection=True;TrustServerCertificate=True;" } }

ポイント

  • HasData() を使うとマイグレーション時に自動で初期データが挿入されます。
  • アプリ起動時に Database.Migrate() を呼び出すことで、未適用のマイグレーションを反映し、初期データも投入されます。
  • もし起動時にコードで直接挿入したい場合は、OnModelCreating ではなく Program.cs 内で db.Users.Add() → db.SaveChanges() を呼び出す方法もあります。

もしご希望なら、このサンプルを 「起動時にコードで直接データ挿入するバージョン」 に書き換えてお渡しできますが、そちらにしますか?
その場合、HasData を使わずに Add() で投入します。

Powered by Froala Editor

添付画像

画像はありません
Genreのカテゴリ-名
Others
編集 | 記事一覧