Shane32.SeedHelpers
1.0.0
dotnet add package Shane32.SeedHelpers --version 1.0.0
NuGet\Install-Package Shane32.SeedHelpers -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Shane32.SeedHelpers" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Shane32.SeedHelpers" Version="1.0.0" />
<PackageReference Include="Shane32.SeedHelpers" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Shane32.SeedHelpers --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Shane32.SeedHelpers, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Shane32.SeedHelpers@1.0.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Shane32.SeedHelpers&version=1.0.0
#tool nuget:?package=Shane32.SeedHelpers&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Shane32.SeedHelpers
This library contains a set of helper classes and methods to facilitate the seeding databases within tests.
Sample use with EF Core database:
public class TestDbContext : AppDbContext
{
private readonly SeedHandler<TestDbContext> _seedHandler;
public TestDbContext(DbContextOptions<AppDbContext> options) : base(options)
{
_seedHandler = new(this);
}
public Task SeedAsync<T>(CancellationToken cancellationToken = default)
{
await _seedHandler.SeedAsync(typeof(T), cancellationToken);
await SaveChangesAsync(cancellationToken);
}
public async Task SeedAllAsync(CancellationToken cancellationToken = default)
{
await _seedHandler.SeedAllAsync(cancellationToken);
await SaveChangesAsync(cancellationToken);
}
public static IEnumerable<Type> GetSeedTypes()
{
return SeedHandler<TestDbContext>.GetSeedTypes();
}
}
Usage Examples
Basic Seed Classes
Here are two sample seed classes where one depends on the other:
// Domain models
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
public class Post
{
public int Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int UserId { get; set; }
public User User { get; set; }
}
// Seed classes
public class UserSeed : Seed<TestDbContext, User>
{
public override async Task SeedAsync(TestDbContext db, CancellationToken cancellationToken = default)
{
db.Users.AddRange(
new User { Id = 1, Name = "John Doe", Email = "john@example.com" },
new User { Id = 2, Name = "Jane Smith", Email = "jane@example.com" }
);
}
}
public class PostSeed : Seed<TestDbContext, Post>
{
public override async Task SeedAsync(TestDbContext db, CancellationToken cancellationToken = default)
{
// First ensure users are seeded (dependency)
await db.SeedAsync<User>(cancellationToken);
db.Posts.AddRange(
new Post
{
Id = 1,
Title = "First Post",
Content = "This is the first post content",
UserId = 1
},
new Post
{
Id = 2,
Title = "Second Post",
Content = "This is the second post content",
UserId = 2
}
);
}
}
Sample Test
Here's a sample test that seeds the Post entity, which automatically handles the User dependency:
[Fact]
public async Task Should_Create_Posts_With_Users()
{
await Db.SeedAsync<Post>();
var posts = await Db.Posts.Include(p => p.User).ToListAsync();
posts.Count.ShouldBe(2);
var users = await Db.Users.ToListAsync();
users.Count.ShouldBe(2);
posts.First().User.ShouldNotBeNull();
posts.First().User.Name.ShouldBe("John Doe");
}
Credits
Glory to Jehovah, Lord of Lords and King of Kings, creator of Heaven and Earth, who through his Son Jesus Christ, has reedemed me to become a child of God. -Shane32
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 5,012 | 6/30/2025 |