Skip to content
Entity Framework data seeding framework
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.nuget
.vs/config
Sample
Wivuu.DataSeed.Tests
Wivuu.DataSeed
.gitattributes
.gitignore
LICENSE
README.md
Wivuu DataSeed.sln

README.md

Update 1.0.12

  • Updated seed mechanism, DbContext no longer needs to extend SeededDbContext, which has been deprecated.
  • 'View' creation system for creating queries of readonly objects

(10/12/2016) The below document has been updated to reflect intended usecase.

Purpose

The purpose of DataSeed is to help you manage the data that gets pre-filled in your database when using EntityFramework's code-first model. DataSeed helps you pre-fill your database with lookup tables and testing data.

Usage

Create a seed

Create a new Seed class (by convention, in a /DataMigrations folder) to inject data into your database with update-database.

public class AddClassesSample : Seed<MyDbContext>
{
    protected Random Random { get; } = new Random(0x01);

	// Only run this seed once
	public override bool ShouldRun(MyDbContext context) =>
		context.Classes.Any() == false;
    
	// Apply the seed
    public override void Apply(MyDbContext context)
    {
        // Add classes
        context.Classes.Add(new Class
        {
            Id   = Random.NextGuid(),
            Name = "Biology 101"
        });

        context.Classes.Add(new Class
        {
            Id   = Random.NextGuid(),
            Name = "Physics 201"
        });
    }
}

Invoke the dataseed

Using DataSeed is simple, after installing the package to your code-first enabled project, open your Configuration.cs file, in the Seed method, add the following call:

protected override void Seed(MyDbContext context)
{
    this.Execute(context, new [] {
		new AddClassesSample(),
		// ... Add more seeds here
	});
}

This is DataSeed's hook into the standard EntityFramework seeding process. Now DataSeed will automatically be looped in when you invoke update-database. The input Seed classes are run in-order, inside a transaction. If any of the seeds failed, the transaction is rolled back.

More information

You can find additional information on my blog here

Future

  • Further documentation is coming to address usage of 'DbViews'.
You can’t perform that action at this time.