forked from ardalis/CleanArchitecture
-
Notifications
You must be signed in to change notification settings - Fork 0
/
DatabaseModule.cs
35 lines (32 loc) · 1.36 KB
/
DatabaseModule.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
using Autofac;
using CleanArchitecture.Core.Interfaces;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using System;
namespace CleanArchitecture.Infrastructure.Data
{
public class DatabaseModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.Register(context =>
{
DbContextOptions<AppDbContext> dbContextOptions = GetInMemoryDbContextOptions();
// DbContextOptions<AppDbContext> dbContextOptions = GetSqlServerDbContextOptions(context);
return new AppDbContext(dbContextOptions, context.Resolve<IDomainEventDispatcher>());
}).SingleInstance();
}
private static DbContextOptions<AppDbContext> GetInMemoryDbContextOptions()
{
string dbName = Guid.NewGuid().ToString();
var option = new DbContextOptionsBuilder<AppDbContext>();
return option.UseInMemoryDatabase(dbName).Options;
}
private static DbContextOptions<AppDbContext> GetSqlServerDbContextOptions(IComponentContext context)
{
IConfiguration config = context.Resolve<IConfiguration>();
var option = new DbContextOptionsBuilder<AppDbContext>();
return option.UseSqlServer(config.GetConnectionString("DefaultConnection")).Options;
}
}
}