使用 Mockaroo 和 Entity Framework 为 .NET 应用程序填充示例数据

发布: (2025年12月15日 GMT+8 21:38)
4 min read
原文: Dev.to

Source: Dev.to

介绍

彻底测试您的应用程序需要多样的示例数据,而手动创建这些数据既费时又繁琐。Mockaroo 通过快速生成逼真的测试数据简化了这一过程。在本教程中,我们将结合 Mockaroo 与 Entity Framework Core 为 .NET Web API 项目播种示例数据。

您需要 Visual Studio Community 版,可在此处下载。

在 Mockaroo 中创建数据集

  1. 访问 Mockaroo 网站
  2. 定义数据集字段(如下示例截图)。
    设置 Mockaroo
  3. 选择 JSON 作为输出格式(因为我们将通过 EF Core 种子数据)。
  4. 点击 生成数据 并下载生成的文件(例如 MOCK_DATA.json)。

创建 Web API 项目

  1. 打开 Visual Studio → 创建新项目
  2. 搜索 ASP.NET Core Web API,选择它,然后点击 下一步
  3. 为项目命名(例如 Mockaroo_Test),选择 .NET 10 作为目标框架,保持默认选项,然后点击 创建
    设置 Web API 项目

安装必需的包

打开 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");
});

种子数据

  1. 将下载的 MOCK_DATA.json 文件移动到项目文件夹中(例如 Web API 项目的根目录)。
    将下载的 Mockaroo 文件移动到应用程序文件夹

  2. 创建一个 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();
    }
}
  1. 在构建应用后于 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 上提供:

祝编码愉快!

Back to Blog

相关文章

阅读更多 »