記事詳細


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

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

内容

了解です。では、先ほどの内容を少し違った切り口で、
「アプリ起動時にコードで直接データを挿入する」 形にして再構成します。
HasData を使わず、DbContext 経由で起動時に Add() → SaveChanges() を行う方法です。

① DbContext クラス

Csharp
using Microsoft.EntityFrameworkCore; public class AppDbContext : DbContext { public DbSet<User> Users { get; set; } public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { } }

② モデルクラス

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

③ アプリ起動時に初期データを投入

ASP.NET Core MVC の場合、Program.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作成&マイグレーション適用 // データが存在しない場合のみ挿入 if (!db.Users.Any()) { db.Users.AddRange( new User { Name = "Admin", Email = "admin@example.com" }, new User { Name = "Guest", Email = "guest@example.com" } ); db.SaveChanges(); } } app.MapDefaultControllerRoute(); app.Run();

④ 接続文字列例(appsettings.json)

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

この方法の特徴

  • HasData を使わないため、マイグレーションに依存せず柔軟に初期化可能。
  • 条件分岐(if (!db.Users.Any()))で重複挿入を防止。
  • 開発・テスト環境でのデータ投入や、簡易的なサンプルアプリに向いている。

もしご希望なら、このコードを ASP.NET MVC(.NET Framework版) 用に書き換えたサンプルも作れます。
そちらも作成しますか?

Powered by Froala Editor

添付画像

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