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

Wednesday, March 22, 2017

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 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, ILoggerFactory loggerFactory, 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 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





ASP.NET Core Posts:
  1. How To Create An ASP.NET Core Application From Scratch
  2. ASP.NET Core : Add jQuery, Bootstrap, AngularJS Using bower.json
  3. Enable ASP.NET Core to Serve Static Files
  4. Enable MVC On ASP.NET Core Application
  5. ASP.NET Core : Create Our First Controller and View  
  6. ASP.NET Core : Adding The Default View With _ViewStart.cshtml
  7. ASP.NET Core : Create A Responsive Layout With Bootstrap
  8. ASP.NET Core : Adding Font-Awesome For Northwind Cafe Navigation Icons
  9. ASP.NET Core : Add .json Configuration Files With Microsoft.Extensions.Configuration Library
  10. ASP.NET Core : Entity Framework Core Models For Northwind Cafe
  11. ASP.NET Core : Create The NothwindContext ( EntityFrameworkCore )
  12. ASP.NET Core : Configure project.json File To Support Entity Framework Core
  13. ASP.NET Core : Add NorthwindContext To Startup Class And Create Database
  14. ASP.NET Core: Seeding The NorwindCafe Database
  15. ASP.NET Core: Add Logging To The NorthwindCafe Application

4 comments:

  1. context.Categories.Any() is not working on my project.

    What's happening is, it inserts the data everytime my application execute. Im using VSCode EntityFrameworkCore in Ubuntu Linux

    ReplyDelete
  2. Does your Categories object have an Id? I suspect it is not executing a check on the database with just .Any() alone.

    You can try the following: if (context.Categories.Any(x => x.Id > 0)) { }

    ReplyDelete
  3. While this article focuses on the use of databases for marketing leisure travel, the principles of database organization may be applied to any database. create dashboard for oracle

    ReplyDelete

Search This Blog