diff --git a/src/Infrastructure/Data/CatalogContext.cs b/src/Infrastructure/Data/CatalogContext.cs index ec33708..07b0ba0 100644 --- a/src/Infrastructure/Data/CatalogContext.cs +++ b/src/Infrastructure/Data/CatalogContext.cs @@ -1,8 +1,6 @@ -using System; -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; using Microsoft.eShopWeb.ApplicationCore.Entities; -using Microsoft.EntityFrameworkCore.Metadata; using ApplicationCore.Entities.OrderAggregate; namespace Infrastructure.Data @@ -105,6 +103,5 @@ namespace Infrastructure.Data { builder.OwnsOne(i => i.ItemOrdered); } - } } diff --git a/src/Infrastructure/Data/CatalogContextSeed.cs b/src/Infrastructure/Data/CatalogContextSeed.cs index 4553684..c0abbf5 100644 --- a/src/Infrastructure/Data/CatalogContextSeed.cs +++ b/src/Infrastructure/Data/CatalogContextSeed.cs @@ -10,8 +10,7 @@ namespace Infrastructure.Data { public class CatalogContextSeed { - public static async Task SeedAsync(IApplicationBuilder applicationBuilder, - CatalogContext catalogContext, + public static async Task SeedAsync(CatalogContext catalogContext, ILoggerFactory loggerFactory, int? retry = 0) { int retryForAvailability = retry.Value; @@ -51,7 +50,7 @@ namespace Infrastructure.Data retryForAvailability++; var log = loggerFactory.CreateLogger(); log.LogError(ex.Message); - await SeedAsync(applicationBuilder, catalogContext, loggerFactory, retryForAvailability); + await SeedAsync(catalogContext, loggerFactory, retryForAvailability); } } } diff --git a/src/Infrastructure/Data/Migrations/20170822214048_InitialModel.cs b/src/Infrastructure/Data/Migrations/20170822214048_InitialModel.cs deleted file mode 100644 index ee87204..0000000 --- a/src/Infrastructure/Data/Migrations/20170822214048_InitialModel.cs +++ /dev/null @@ -1,155 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Metadata; - -namespace Infrastructure.Data.Migrations -{ - public partial class InitialModel : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateSequence( - name: "catalog_brand_hilo", - incrementBy: 10); - - migrationBuilder.CreateSequence( - name: "catalog_hilo", - incrementBy: 10); - - migrationBuilder.CreateSequence( - name: "catalog_type_hilo", - incrementBy: 10); - - migrationBuilder.CreateTable( - name: "Baskets", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn), - BuyerId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Baskets", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "CatalogBrand", - columns: table => new - { - Id = table.Column(nullable: false), - Brand = table.Column(maxLength: 100, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_CatalogBrand", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "CatalogType", - columns: table => new - { - Id = table.Column(nullable: false), - Type = table.Column(maxLength: 100, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_CatalogType", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "BasketItem", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn), - BasketId = table.Column(nullable: true), - CatalogItemId = table.Column(nullable: false), - Quantity = table.Column(nullable: false), - UnitPrice = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_BasketItem", x => x.Id); - table.ForeignKey( - name: "FK_BasketItem_Baskets_BasketId", - column: x => x.BasketId, - principalTable: "Baskets", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "Catalog", - columns: table => new - { - Id = table.Column(nullable: false), - CatalogBrandId = table.Column(nullable: false), - CatalogTypeId = table.Column(nullable: false), - Description = table.Column(nullable: true), - Name = table.Column(maxLength: 50, nullable: false), - PictureUri = table.Column(nullable: true), - Price = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Catalog", x => x.Id); - table.ForeignKey( - name: "FK_Catalog_CatalogBrand_CatalogBrandId", - column: x => x.CatalogBrandId, - principalTable: "CatalogBrand", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_Catalog_CatalogType_CatalogTypeId", - column: x => x.CatalogTypeId, - principalTable: "CatalogType", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_BasketItem_BasketId", - table: "BasketItem", - column: "BasketId"); - - migrationBuilder.CreateIndex( - name: "IX_Catalog_CatalogBrandId", - table: "Catalog", - column: "CatalogBrandId"); - - migrationBuilder.CreateIndex( - name: "IX_Catalog_CatalogTypeId", - table: "Catalog", - column: "CatalogTypeId"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "BasketItem"); - - migrationBuilder.DropTable( - name: "Catalog"); - - migrationBuilder.DropTable( - name: "Baskets"); - - migrationBuilder.DropTable( - name: "CatalogBrand"); - - migrationBuilder.DropTable( - name: "CatalogType"); - - migrationBuilder.DropSequence( - name: "catalog_brand_hilo"); - - migrationBuilder.DropSequence( - name: "catalog_hilo"); - - migrationBuilder.DropSequence( - name: "catalog_type_hilo"); - } - } -} diff --git a/src/Infrastructure/Data/Migrations/20170822214048_InitialModel.Designer.cs b/src/Infrastructure/Data/Migrations/20171018175735_Initial.Designer.cs similarity index 55% rename from src/Infrastructure/Data/Migrations/20170822214048_InitialModel.Designer.cs rename to src/Infrastructure/Data/Migrations/20171018175735_Initial.Designer.cs index 9c8b969..6ccc716 100644 --- a/src/Infrastructure/Data/Migrations/20170822214048_InitialModel.Designer.cs +++ b/src/Infrastructure/Data/Migrations/20171018175735_Initial.Designer.cs @@ -1,25 +1,61 @@ -using System; +// +using Infrastructure.Data; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using Infrastructure.Data; +using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore.Storage.Internal; +using System; namespace Infrastructure.Data.Migrations { [DbContext(typeof(CatalogContext))] - [Migration("20170822214048_InitialModel")] - partial class InitialModel + [Migration("20171018175735_Initial")] + partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) { +#pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "1.1.2") - .HasAnnotation("SqlServer:Sequence:.catalog_brand_hilo", "'catalog_brand_hilo', '', '1', '10', '', '', 'Int64', 'False'") - .HasAnnotation("SqlServer:Sequence:.catalog_hilo", "'catalog_hilo', '', '1', '10', '', '', 'Int64', 'False'") - .HasAnnotation("SqlServer:Sequence:.catalog_type_hilo", "'catalog_type_hilo', '', '1', '10', '', '', 'Int64', 'False'") + .HasAnnotation("ProductVersion", "2.0.0-rtm-26452") + .HasAnnotation("Relational:Sequence:.catalog_brand_hilo", "'catalog_brand_hilo', '', '1', '10', '', '', 'Int64', 'False'") + .HasAnnotation("Relational:Sequence:.catalog_hilo", "'catalog_hilo', '', '1', '10', '', '', 'Int64', 'False'") + .HasAnnotation("Relational:Sequence:.catalog_type_hilo", "'catalog_type_hilo', '', '1', '10', '', '', 'Int64', 'False'") .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + modelBuilder.Entity("ApplicationCore.Entities.OrderAggregate.Order", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BuyerId"); + + b.Property("OrderDate"); + + b.HasKey("Id"); + + b.ToTable("Orders"); + }); + + modelBuilder.Entity("ApplicationCore.Entities.OrderAggregate.OrderItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("OrderId"); + + b.Property("UnitPrice"); + + b.Property("Units"); + + b.HasKey("Id"); + + b.HasIndex("OrderId"); + + b.ToTable("OrderItems"); + }); + modelBuilder.Entity("Microsoft.eShopWeb.ApplicationCore.Entities.Basket", b => { b.Property("Id") @@ -114,6 +150,56 @@ namespace Infrastructure.Data.Migrations b.ToTable("CatalogType"); }); + modelBuilder.Entity("ApplicationCore.Entities.OrderAggregate.Order", b => + { + b.OwnsOne("ApplicationCore.Entities.OrderAggregate.Address", "ShipToAddress", b1 => + { + b1.Property("OrderId"); + + b1.Property("City"); + + b1.Property("Country"); + + b1.Property("State"); + + b1.Property("Street"); + + b1.Property("ZipCode"); + + b1.ToTable("Orders"); + + b1.HasOne("ApplicationCore.Entities.OrderAggregate.Order") + .WithOne("ShipToAddress") + .HasForeignKey("ApplicationCore.Entities.OrderAggregate.Address", "OrderId") + .OnDelete(DeleteBehavior.Cascade); + }); + }); + + modelBuilder.Entity("ApplicationCore.Entities.OrderAggregate.OrderItem", b => + { + b.HasOne("ApplicationCore.Entities.OrderAggregate.Order") + .WithMany("OrderItems") + .HasForeignKey("OrderId"); + + b.OwnsOne("ApplicationCore.Entities.OrderAggregate.CatalogItemOrdered", "ItemOrdered", b1 => + { + b1.Property("OrderItemId"); + + b1.Property("CatalogItemId"); + + b1.Property("PictureUri"); + + b1.Property("ProductName"); + + b1.ToTable("OrderItems"); + + b1.HasOne("ApplicationCore.Entities.OrderAggregate.OrderItem") + .WithOne("ItemOrdered") + .HasForeignKey("ApplicationCore.Entities.OrderAggregate.CatalogItemOrdered", "OrderItemId") + .OnDelete(DeleteBehavior.Cascade); + }); + }); + modelBuilder.Entity("Microsoft.eShopWeb.ApplicationCore.Entities.BasketItem", b => { b.HasOne("Microsoft.eShopWeb.ApplicationCore.Entities.Basket") @@ -133,6 +219,7 @@ namespace Infrastructure.Data.Migrations .HasForeignKey("CatalogTypeId") .OnDelete(DeleteBehavior.Cascade); }); +#pragma warning restore 612, 618 } } } diff --git a/src/Infrastructure/Data/Migrations/20171018175735_Initial.cs b/src/Infrastructure/Data/Migrations/20171018175735_Initial.cs new file mode 100644 index 0000000..b477066 --- /dev/null +++ b/src/Infrastructure/Data/Migrations/20171018175735_Initial.cs @@ -0,0 +1,209 @@ +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using System; +using System.Collections.Generic; + +namespace Infrastructure.Data.Migrations +{ + public partial class Initial : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateSequence( + name: "catalog_brand_hilo", + incrementBy: 10); + + migrationBuilder.CreateSequence( + name: "catalog_hilo", + incrementBy: 10); + + migrationBuilder.CreateSequence( + name: "catalog_type_hilo", + incrementBy: 10); + + migrationBuilder.CreateTable( + name: "Baskets", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn), + BuyerId = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Baskets", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "CatalogBrand", + columns: table => new + { + Id = table.Column(type: "int", nullable: false), + Brand = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CatalogBrand", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "CatalogType", + columns: table => new + { + Id = table.Column(type: "int", nullable: false), + Type = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CatalogType", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Orders", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn), + BuyerId = table.Column(type: "nvarchar(max)", nullable: true), + OrderDate = table.Column(type: "datetimeoffset", nullable: false), + ShipToAddress_City = table.Column(type: "nvarchar(max)", nullable: true), + ShipToAddress_Country = table.Column(type: "nvarchar(max)", nullable: true), + ShipToAddress_State = table.Column(type: "nvarchar(max)", nullable: true), + ShipToAddress_Street = table.Column(type: "nvarchar(max)", nullable: true), + ShipToAddress_ZipCode = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Orders", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "BasketItem", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn), + BasketId = table.Column(type: "int", nullable: true), + CatalogItemId = table.Column(type: "int", nullable: false), + Quantity = table.Column(type: "int", nullable: false), + UnitPrice = table.Column(type: "decimal(18, 2)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_BasketItem", x => x.Id); + table.ForeignKey( + name: "FK_BasketItem_Baskets_BasketId", + column: x => x.BasketId, + principalTable: "Baskets", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "Catalog", + columns: table => new + { + Id = table.Column(type: "int", nullable: false), + CatalogBrandId = table.Column(type: "int", nullable: false), + CatalogTypeId = table.Column(type: "int", nullable: false), + Description = table.Column(type: "nvarchar(max)", nullable: true), + Name = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false), + PictureUri = table.Column(type: "nvarchar(max)", nullable: true), + Price = table.Column(type: "decimal(18, 2)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Catalog", x => x.Id); + table.ForeignKey( + name: "FK_Catalog_CatalogBrand_CatalogBrandId", + column: x => x.CatalogBrandId, + principalTable: "CatalogBrand", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Catalog_CatalogType_CatalogTypeId", + column: x => x.CatalogTypeId, + principalTable: "CatalogType", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "OrderItems", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn), + OrderId = table.Column(type: "int", nullable: true), + UnitPrice = table.Column(type: "decimal(18, 2)", nullable: false), + Units = table.Column(type: "int", nullable: false), + ItemOrdered_CatalogItemId = table.Column(type: "int", nullable: false), + ItemOrdered_PictureUri = table.Column(type: "nvarchar(max)", nullable: true), + ItemOrdered_ProductName = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_OrderItems", x => x.Id); + table.ForeignKey( + name: "FK_OrderItems_Orders_OrderId", + column: x => x.OrderId, + principalTable: "Orders", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateIndex( + name: "IX_BasketItem_BasketId", + table: "BasketItem", + column: "BasketId"); + + migrationBuilder.CreateIndex( + name: "IX_Catalog_CatalogBrandId", + table: "Catalog", + column: "CatalogBrandId"); + + migrationBuilder.CreateIndex( + name: "IX_Catalog_CatalogTypeId", + table: "Catalog", + column: "CatalogTypeId"); + + migrationBuilder.CreateIndex( + name: "IX_OrderItems_OrderId", + table: "OrderItems", + column: "OrderId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "BasketItem"); + + migrationBuilder.DropTable( + name: "Catalog"); + + migrationBuilder.DropTable( + name: "OrderItems"); + + migrationBuilder.DropTable( + name: "Baskets"); + + migrationBuilder.DropTable( + name: "CatalogBrand"); + + migrationBuilder.DropTable( + name: "CatalogType"); + + migrationBuilder.DropTable( + name: "Orders"); + + migrationBuilder.DropSequence( + name: "catalog_brand_hilo"); + + migrationBuilder.DropSequence( + name: "catalog_hilo"); + + migrationBuilder.DropSequence( + name: "catalog_type_hilo"); + } + } +} diff --git a/src/Infrastructure/Data/Migrations/CatalogContextModelSnapshot.cs b/src/Infrastructure/Data/Migrations/CatalogContextModelSnapshot.cs index 7bebf78..425bc05 100644 --- a/src/Infrastructure/Data/Migrations/CatalogContextModelSnapshot.cs +++ b/src/Infrastructure/Data/Migrations/CatalogContextModelSnapshot.cs @@ -1,9 +1,12 @@ -using System; +// +using Infrastructure.Data; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using Infrastructure.Data; +using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore.Storage.Internal; +using System; namespace Infrastructure.Data.Migrations { @@ -12,13 +15,46 @@ namespace Infrastructure.Data.Migrations { protected override void BuildModel(ModelBuilder modelBuilder) { +#pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "1.1.2") - .HasAnnotation("SqlServer:Sequence:.catalog_brand_hilo", "'catalog_brand_hilo', '', '1', '10', '', '', 'Int64', 'False'") - .HasAnnotation("SqlServer:Sequence:.catalog_hilo", "'catalog_hilo', '', '1', '10', '', '', 'Int64', 'False'") - .HasAnnotation("SqlServer:Sequence:.catalog_type_hilo", "'catalog_type_hilo', '', '1', '10', '', '', 'Int64', 'False'") + .HasAnnotation("ProductVersion", "2.0.0-rtm-26452") + .HasAnnotation("Relational:Sequence:.catalog_brand_hilo", "'catalog_brand_hilo', '', '1', '10', '', '', 'Int64', 'False'") + .HasAnnotation("Relational:Sequence:.catalog_hilo", "'catalog_hilo', '', '1', '10', '', '', 'Int64', 'False'") + .HasAnnotation("Relational:Sequence:.catalog_type_hilo", "'catalog_type_hilo', '', '1', '10', '', '', 'Int64', 'False'") .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + modelBuilder.Entity("ApplicationCore.Entities.OrderAggregate.Order", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BuyerId"); + + b.Property("OrderDate"); + + b.HasKey("Id"); + + b.ToTable("Orders"); + }); + + modelBuilder.Entity("ApplicationCore.Entities.OrderAggregate.OrderItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("OrderId"); + + b.Property("UnitPrice"); + + b.Property("Units"); + + b.HasKey("Id"); + + b.HasIndex("OrderId"); + + b.ToTable("OrderItems"); + }); + modelBuilder.Entity("Microsoft.eShopWeb.ApplicationCore.Entities.Basket", b => { b.Property("Id") @@ -113,6 +149,56 @@ namespace Infrastructure.Data.Migrations b.ToTable("CatalogType"); }); + modelBuilder.Entity("ApplicationCore.Entities.OrderAggregate.Order", b => + { + b.OwnsOne("ApplicationCore.Entities.OrderAggregate.Address", "ShipToAddress", b1 => + { + b1.Property("OrderId"); + + b1.Property("City"); + + b1.Property("Country"); + + b1.Property("State"); + + b1.Property("Street"); + + b1.Property("ZipCode"); + + b1.ToTable("Orders"); + + b1.HasOne("ApplicationCore.Entities.OrderAggregate.Order") + .WithOne("ShipToAddress") + .HasForeignKey("ApplicationCore.Entities.OrderAggregate.Address", "OrderId") + .OnDelete(DeleteBehavior.Cascade); + }); + }); + + modelBuilder.Entity("ApplicationCore.Entities.OrderAggregate.OrderItem", b => + { + b.HasOne("ApplicationCore.Entities.OrderAggregate.Order") + .WithMany("OrderItems") + .HasForeignKey("OrderId"); + + b.OwnsOne("ApplicationCore.Entities.OrderAggregate.CatalogItemOrdered", "ItemOrdered", b1 => + { + b1.Property("OrderItemId"); + + b1.Property("CatalogItemId"); + + b1.Property("PictureUri"); + + b1.Property("ProductName"); + + b1.ToTable("OrderItems"); + + b1.HasOne("ApplicationCore.Entities.OrderAggregate.OrderItem") + .WithOne("ItemOrdered") + .HasForeignKey("ApplicationCore.Entities.OrderAggregate.CatalogItemOrdered", "OrderItemId") + .OnDelete(DeleteBehavior.Cascade); + }); + }); + modelBuilder.Entity("Microsoft.eShopWeb.ApplicationCore.Entities.BasketItem", b => { b.HasOne("Microsoft.eShopWeb.ApplicationCore.Entities.Basket") @@ -132,6 +218,7 @@ namespace Infrastructure.Data.Migrations .HasForeignKey("CatalogTypeId") .OnDelete(DeleteBehavior.Cascade); }); +#pragma warning restore 612, 618 } } } diff --git a/src/Web/Program.cs b/src/Web/Program.cs index 20289be..9810832 100644 --- a/src/Web/Program.cs +++ b/src/Web/Program.cs @@ -1,14 +1,46 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore; +using Microsoft.Extensions.DependencyInjection; +using Infrastructure.Data; +using System; +using Microsoft.Extensions.Logging; +using Infrastructure.Identity; +using Microsoft.AspNetCore.Identity; namespace Microsoft.eShopWeb { public class Program { - public static void Main(string[] args) { - BuildWebHost(args).Run(); + var host = BuildWebHost(args); + + using (var scope = host.Services.CreateScope()) + { + var services = scope.ServiceProvider; + + try + { + var catalogContext = services.GetRequiredService(); + var loggerFactory = services.GetRequiredService(); + CatalogContextSeed.SeedAsync(catalogContext, loggerFactory) + .Wait(); + + // move to IdentitySeed method + var userManager = services.GetRequiredService>(); + var defaultUser = new ApplicationUser { UserName = "demouser@microsoft.com", Email = "demouser@microsoft.com" }; + userManager.CreateAsync(defaultUser, "Pass@word1").Wait(); + + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + //var logger = services.GetRequiredService>(); + //logger.LogError(ex, "An error occurred seeding the DB."); + } + } + + host.Run(); } public static IWebHost BuildWebHost(string[] args) => diff --git a/src/Web/Startup.cs b/src/Web/Startup.cs index 5f8f6c4..08363df 100644 --- a/src/Web/Startup.cs +++ b/src/Web/Startup.cs @@ -32,14 +32,15 @@ namespace Microsoft.eShopWeb public void ConfigureServices(IServiceCollection services) { - // Requires LocalDB which can be installed with SQL Server Express 2016 - // https://www.microsoft.com/en-us/download/details.aspx?id=54284 services.AddDbContext(c => { try { - c.UseInMemoryDatabase("Catalog"); - //c.UseSqlServer(Configuration.GetConnectionString("CatalogConnection")); + //c.UseInMemoryDatabase("Catalog"); + + // Requires LocalDB which can be installed with SQL Server Express 2016 + // https://www.microsoft.com/en-us/download/details.aspx?id=54284 + c.UseSqlServer(Configuration.GetConnectionString("CatalogConnection")); } catch (System.Exception ex ) { @@ -49,8 +50,8 @@ namespace Microsoft.eShopWeb // Add Identity DbContext services.AddDbContext(options => - options.UseInMemoryDatabase("Identity")); - //options.UseSqlServer(Configuration.GetConnectionString("IdentityConnection"))); + //options.UseInMemoryDatabase("Identity")); + options.UseSqlServer(Configuration.GetConnectionString("IdentityConnection"))); services.AddIdentity() .AddEntityFrameworkStores() @@ -129,44 +130,21 @@ namespace Microsoft.eShopWeb })); } - public void ConfigureDevelopment(IApplicationBuilder app, - IHostingEnvironment env, - ILoggerFactory loggerFactory, - UserManager userManager, - CatalogContext catalogContext) - { - Configure(app, env); + // moved to Program.cs + //public void ConfigureDevelopment(IApplicationBuilder app, + // IHostingEnvironment env, + // ILoggerFactory loggerFactory, + // UserManager userManager, + // CatalogContext catalogContext) + //{ + // Configure(app, env); - //Seed Data - CatalogContextSeed.SeedAsync(app, catalogContext, loggerFactory) - .Wait(); + // //Seed Data + // CatalogContextSeed.SeedAsync(app, catalogContext, loggerFactory) + // .Wait(); - var defaultUser = new ApplicationUser { UserName = "demouser@microsoft.com", Email = "demouser@microsoft.com" }; - userManager.CreateAsync(defaultUser, "Pass@word1").Wait(); - } - - /// - /// Use this section to perform production-specific configuration. - /// In this case it is duplicating Development so that deployments to Azure will have sample data immediately. - /// - /// - /// - /// - /// - public void ConfigureProduction(IApplicationBuilder app, - IHostingEnvironment env, - ILoggerFactory loggerFactory, - UserManager userManager, - CatalogContext catalogContext) - { - Configure(app, env); - - //Seed Data - CatalogContextSeed.SeedAsync(app, catalogContext, loggerFactory) - .Wait(); - - var defaultUser = new ApplicationUser { UserName = "demouser@microsoft.com", Email = "demouser@microsoft.com" }; - userManager.CreateAsync(defaultUser, "Pass@word1").Wait(); - } + // var defaultUser = new ApplicationUser { UserName = "demouser@microsoft.com", Email = "demouser@microsoft.com" }; + // userManager.CreateAsync(defaultUser, "Pass@word1").Wait(); + //} } } diff --git a/src/Web/Web.csproj b/src/Web/Web.csproj index c8cc466..464871a 100644 --- a/src/Web/Web.csproj +++ b/src/Web/Web.csproj @@ -23,6 +23,7 @@ +