Skip to content

Commit 0a1586c

Browse files
committed
CreateAndSeedDatabase
1 parent e9d1498 commit 0a1586c

File tree

2 files changed

+36
-15
lines changed

2 files changed

+36
-15
lines changed

src/Ordering/Ordering.API/Program.cs

+25-5
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
using System;
2-
using System.Collections.Generic;
3-
using System.Linq;
4-
using System.Threading.Tasks;
52
using Microsoft.AspNetCore.Hosting;
6-
using Microsoft.Extensions.Configuration;
3+
using Microsoft.Extensions.DependencyInjection;
74
using Microsoft.Extensions.Hosting;
85
using Microsoft.Extensions.Logging;
6+
using Ordering.Infrastructure.Data;
97

108
namespace Ordering.API
119
{
1210
public class Program
1311
{
1412
public static void Main(string[] args)
1513
{
16-
CreateHostBuilder(args).Build().Run();
14+
var host = CreateHostBuilder(args).Build();
15+
CreateAndSeedDatabase(host);
16+
host.Run();
1717
}
1818

1919
public static IHostBuilder CreateHostBuilder(string[] args) =>
@@ -22,5 +22,25 @@ public static IHostBuilder CreateHostBuilder(string[] args) =>
2222
{
2323
webBuilder.UseStartup<Startup>();
2424
});
25+
26+
private static void CreateAndSeedDatabase(IHost host)
27+
{
28+
using (var scope = host.Services.CreateScope())
29+
{
30+
var services = scope.ServiceProvider;
31+
var loggerFactory = services.GetRequiredService<ILoggerFactory>();
32+
33+
try
34+
{
35+
var aspnetRunContext = services.GetRequiredService<OrderContext>();
36+
OrderContextSeed.SeedAsync(aspnetRunContext, loggerFactory).Wait();
37+
}
38+
catch (Exception exception)
39+
{
40+
var logger = loggerFactory.CreateLogger<Program>();
41+
logger.LogError(exception, "An error occurred seeding the DB.");
42+
}
43+
}
44+
}
2545
}
2646
}

src/Ordering/Ordering.Infrastructure/Data/OrderContextSeed.cs

+11-10
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Microsoft.Extensions.Logging;
1+
using Microsoft.EntityFrameworkCore;
2+
using Microsoft.Extensions.Logging;
23
using Ordering.Core.Entities;
34
using System;
45
using System.Collections.Generic;
@@ -9,20 +10,20 @@ namespace Ordering.Infrastructure.Data
910
{
1011
public class OrderContextSeed
1112
{
12-
public static async Task SeedAsync(OrderContext aspnetrunContext, ILoggerFactory loggerFactory, int? retry = 0)
13+
public static async Task SeedAsync(OrderContext orderContext, ILoggerFactory loggerFactory, int? retry = 0)
1314
{
1415
int retryForAvailability = retry.Value;
1516

1617
try
1718
{
1819
// TODO: Only run this if using a real database
19-
// aspnetrunContext.Database.Migrate();
20-
// aspnetrunContext.Database.EnsureCreated();
20+
orderContext.Database.Migrate();
21+
//orderContext.Database.EnsureCreated();
2122

22-
if (!aspnetrunContext.Orders.Any())
23+
if (!orderContext.Orders.Any())
2324
{
24-
aspnetrunContext.Orders.AddRange(GetPreconfiguredOrders());
25-
await aspnetrunContext.SaveChangesAsync();
25+
orderContext.Orders.AddRange(GetPreconfiguredOrders());
26+
await orderContext.SaveChangesAsync();
2627
}
2728
}
2829
catch (Exception exception)
@@ -32,7 +33,7 @@ public static async Task SeedAsync(OrderContext aspnetrunContext, ILoggerFactory
3233
retryForAvailability++;
3334
var log = loggerFactory.CreateLogger<OrderContextSeed>();
3435
log.LogError(exception.Message);
35-
await SeedAsync(aspnetrunContext, loggerFactory, retryForAvailability);
36+
await SeedAsync(orderContext, loggerFactory, retryForAvailability);
3637
}
3738
throw;
3839
}
@@ -42,8 +43,8 @@ private static IEnumerable<Order> GetPreconfiguredOrders()
4243
{
4344
return new List<Order>()
4445
{
45-
new Order() { FirstName = "swn", LastName = "swn" },
46-
new Order() { FirstName = "swn2", LastName = "swn2" }
46+
new Order() { UserName = "swn", FirstName = "Mehmet", LastName = "Ozkaya", EmailAddress = "meh@ozk.com", AddressLine = "Bahcelievler", TotalPrice = 5239 },
47+
new Order() { UserName = "swn", FirstName = "Selim", LastName = "Arslan", EmailAddress ="sel@ars.com", AddressLine = "Ferah", TotalPrice = 3486 }
4748
};
4849
}
4950
}

0 commit comments

Comments
 (0)