Command.Seeder
1.0.2
dotnet add package Command.Seeder --version 1.0.2
NuGet\Install-Package Command.Seeder -Version 1.0.2
<PackageReference Include="Command.Seeder" Version="1.0.2" />
<PackageVersion Include="Command.Seeder" Version="1.0.2" />
<PackageReference Include="Command.Seeder" />
paket add Command.Seeder --version 1.0.2
#r "nuget: Command.Seeder, 1.0.2"
#:package Command.Seeder@1.0.2
#addin nuget:?package=Command.Seeder&version=1.0.2
#tool nuget:?package=Command.Seeder&version=1.0.2
π± Seeder Command Dispatcher
A lightweight database seeding framework for .NET, inspired by Laravelβs db:seed command.
Easily discover and run all seeders dynamically in ASP.NET Core or Console projects.
For any problems or new ideas please email me at: hossein.holy.shrine@gmail.com
β¨ Features
- π Command-style seeding
dotnet run db:seed - π Auto-discovery of all ISeeder implementations
- β‘ Run one or multiple seeders at once
- π Works with any EF Core DbContext
- π Works in Web APIs and Console Apps
- π Centralized configuration for flexible DbContext swapping
- π₯ Installation
π Quick Start 1οΈβ£ Define a Seeder
using YourProject.Seeders;
using Microsoft.EntityFrameworkCore;
using Seeder.Seeders;
public class DegreeSeeder : ISeeder
{
private readonly MyDbContext _db;
public DegreeSeeder(MyDbContext db) => _db = db;
public async Task SeedAsync()
{
var degrees = new[]
{
new Degree { Name = "low" },
new Degree { Name = "medium" },
new Degree { Name = "hight" },
};
_db.Degrees.AddRange(degrees);
await _db.SaveChangesAsync(cancellationToken);
}
}
2οΈβ£ Register Seeders In ASP.NET Core Program.cs:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"))
);
// Register all seeders
builder.Services.AddAllSeeders();
var app = builder.Build();
// Attach seeder dispatcher
SeederCommandDispatcher.ConfigureWithDbContext<MyDbContext>(app.Services);
if (await SeederCommandDispatcher.TryExecuteCommandAsync(args))
{
return; // Run seeder and exit
}
app.Run();
In Console App:
using Microsoft.Extensions.Hosting;
using Microsoft.EntityFrameworkCore;
using var host = Host.CreateDefaultBuilder(args)
.ConfigureServices((context, services) =>
{
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(context.Configuration.GetConnectionString("DefaultConnection")));
services.AddAllSeeders();
})
.Build();
SeederCommandDispatcher.ConfigureWithDbContext<MyDbContext>(host.Services);
if (await SeederCommandDispatcher.TryExecuteCommandAsync(args)) return;
3οΈβ£ Run Seeders
Run all seeders:
dotnet run db:seed
or
dotnet run db:seed all
Run a specific seeder:
dotnet run db:seed DegreeSeeder
Run multiple seeders:
dotnet run db:seed DegreeSeeder UserSeeder RoleSeeder
π Example Output
> dotnet run db:seed DegreeSeeder
[INFO] Running DegreeSeeder...
[OK] Inserted 3 degrees
π Requirements
- .NET 9.0 or higher
- EF Core (SQL Server, PostgreSQL, MySQL, SQLite supported)
π License This project is licensed under the MIT License.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- Microsoft.EntityFrameworkCore (>= 9.0.0)
- Microsoft.Extensions.DependencyInjection (>= 9.0.0)
- Microsoft.Extensions.Hosting (>= 9.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.