Tech Junkie Blog - Real World Tutorials, Happy Coding!: Hour 14 ASP.NET Core: Seeding The NorwindCafe Database

Friday, August 23, 2019

Hour 14 ASP.NET Core: Seeding The NorwindCafe Database

In the previous blog we created the NorthwindCafe database with Entity Framework Core.  Now we are going to seed the database so that we can work with the data.

Here are the steps to seed the NorthwindCafe database:

1.  Create a file call DBInitializer in the NorthwindCafe.Web  "Models" folder, in the file type in the following code


using System.Linq;

namespace NorthwindCafe.Web.Models
{
    public class DbInitializer
    {
        public static void Initialize(NorthwindContext context)
        {
            context.Database.EnsureCreated();

            if(context.Categories.Any())
            {
                return;
            }

            var categories = new Category[]
            {
               new Category {Name = "Coffee", Description="Coffee", Products = new Product[] { new Product { Name = "Dark Roast", Description = "Dark Roast", Price = 2.0M } } },
               new Category {Name = "Tea", Description="Tea", Products = new Product[] { new Product { Name = "Chai", Description = "Chai", Price = 1.5M } } },
               new Category {Name = "Pastry", Description="Pastry", Products = new Product[] { new Product { Name = "Cupcake", Description = "Cupcake", Price = 1.25M } } },
               new Category {Name = "Food", Description = "Food", Products = new Product[] { new Product  { Name = "Hamburger", Description = "Hamburger", Price = 5.0M } } }
            };

            foreach (var c in categories)
            {
                context.Categories.Add(c);

            }

            context.SaveChanges();
        }
    }
}




The code is pretty straight forward it checks for categories in the database with the line

context.Categories.Any()

if there are Categories in the database then it just get out of the method else it populates the database with the categories object

2.  Now open the Startup.cs file and add the NorthwindContext to the Configure method


        public void Configure(IApplicationBuilder app, IHostingEnvironment env, NorthwindContext context)
        {
            app.UseStaticFiles();
            app.UseMvc(config =>
            {
                config.MapRoute(
                    name: "Default",
                    template: "{controller}/{action}/{id?}",
                    defaults: new { controller = "Home", action = "Index" }
                    );
            });

            DbInitializer.Initialize(context);
        }

Add the line DbIntitializer.Initialize(context) to the end of the method to seed the database on startup Run by pressing CTRL+F5 the application and the Categories table will be populated with seed data



The Products table will be populated as well notice how the CategoryId has been assigned to the appropriate category



1 comment:

Search This Blog