使用 Mockaroo 和 Entity Framework 为 .NET 应用程序填充示例数据
Source: Dev.to
介绍
彻底测试您的应用程序需要多样的示例数据,而手动创建这些数据既费时又繁琐。Mockaroo 通过快速生成逼真的测试数据简化了这一过程。在本教程中,我们将结合 Mockaroo 与 Entity Framework Core 为 .NET Web API 项目播种示例数据。
您需要 Visual Studio Community 版,可在此处下载。
在 Mockaroo 中创建数据集
- 访问 Mockaroo 网站。
- 定义数据集字段(如下示例截图)。

- 选择 JSON 作为输出格式(因为我们将通过 EF Core 种子数据)。
- 点击 生成数据 并下载生成的文件(例如
MOCK_DATA.json)。
创建 Web API 项目
- 打开 Visual Studio → 创建新项目。
- 搜索 ASP.NET Core Web API,选择它,然后点击 下一步。
- 为项目命名(例如
Mockaroo_Test),选择 .NET 10 作为目标框架,保持默认选项,然后点击 创建。

安装必需的包
打开 Package Manager Console 并运行:
Install-Package Microsoft.EntityFrameworkCore
Install-Package Microsoft.EntityFrameworkCore.InMemory
Install-Package Microsoft.EntityFrameworkCore.Design
定义模型
创建一个与 Mockaroo 中定义的字段相匹配的 Club 类:
using System.Text.Json.Serialization;
public class Club
{
public int Id { get; set; }
[JsonPropertyName("club_name")]
public string ClubName { get; set; }
[JsonPropertyName("country_location")]
public string CountryLocation { get; set; }
[JsonPropertyName("stadium_capacity")]
public int StadiumCapacity { get; set; }
[JsonPropertyName("manager_name")]
public string ManagerName { get; set; }
[JsonPropertyName("founded_year")]
public int FoundedYear { get; set; }
[JsonPropertyName("league_affiliation")]
public string LeagueAffiliation { get; set; }
[JsonPropertyName("captain_name")]
public string CaptainName { get; set; }
[JsonPropertyName("jersey_color")]
public string JerseyColor { get; set; }
[JsonPropertyName("average_attendance")]
public int AverageAttendance { get; set; }
[JsonPropertyName("major_rival")]
public string MajorRival { get; set; }
}
创建 DbContext
添加一个新类 AppDbContext:
using Microsoft.EntityFrameworkCore;
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions options) : base(options) { }
public DbSet<Club> Clubs { get; set; }
}
配置内存数据库
在 Program.cs 中注册上下文:
builder.Services.AddDbContext<AppDbContext>(options =>
{
options.UseInMemoryDatabase("MockarooDemoDb");
});
种子数据
-
将下载的
MOCK_DATA.json文件移动到项目文件夹中(例如 Web API 项目的根目录)。

-
创建一个
SeedData类来加载 JSON 并填充数据库:
using System.Text.Json;
public class SeedData
{
public static async Task SeedAsync(AppDbContext context)
{
if (context.Clubs.Any()) return;
var json = await File.ReadAllTextAsync("MOCK_DATA.json");
var clubs = JsonSerializer.Deserialize<List<Club>>(json);
context.Clubs.AddRange(clubs!);
await context.SaveChangesAsync();
}
}
- 在构建应用后于
Program.cs中调用种子逻辑:
var app = builder.Build();
using (var scope = app.Services.CreateScope())
{
var db = scope.ServiceProvider.GetRequiredService<AppDbContext>();
await SeedData.SeedAsync(db);
}
现在,运行应用时,内存数据库 MockarooDemoDb 将被填充为生成的模拟数据。
可视化种子数据
创建一个控制器,通过 API 端点公开俱乐部信息。
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
[ApiController]
[Route("api/[controller]")]
public class ClubController : ControllerBase
{
private readonly AppDbContext _context;
public ClubController(AppDbContext context)
{
_context = context;
}
[HttpGet]
public async Task<ActionResult<List<Club>>> Get()
{
var clubs = await _context.Clubs.ToListAsync();
return Ok(clubs);
}
}
Swagger
如果尚未设置 Swagger,请参考此处的指南。
运行项目并打开 Swagger UI 页面。执行 GET /api/Club 端点即可看到已种子的俱乐部数据。

完整项目源码
完整项目已在 GitHub 上提供:
祝编码愉快!