CQRS_Simple/CQRS_Simple.API/Modules/InfrastructureModule.cs

62 lines
2.2 KiB
C#
Raw Normal View History

2022-04-07 14:00:58 +08:00
using Autofac;
using Autofac.Extras.DynamicProxy;
using CQRS_Simple.EntityFrameworkCore;
using CQRS_Simple.Infrastructure;
using CQRS_Simple.Infrastructure.Dapper;
using CQRS_Simple.Infrastructure.MQ;
using CQRS_Simple.Infrastructure.Uow;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
namespace CQRS_Simple.Modules
{
public class InfrastructureModule : Autofac.Module
{
private readonly string _databaseConnectionString;
// private readonly ILoggerFactory _loggerFactory;
public InfrastructureModule(string databaseConnectionString
)
{
this._databaseConnectionString = databaseConnectionString;
// _loggerFactory = loggerFactory;
}
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<RabbitMQClient>().SingleInstance();
builder.Register(c => new SqlConnectionFactory(_databaseConnectionString))
.As<ISqlConnectionFactory>()
// .WithParameter("connectionString", _databaseConnectionString)
.InstancePerLifetimeScope();
builder.RegisterGeneric(typeof(DapperRepository<,>)).As(typeof(IDapperRepository<,>))
.InstancePerLifetimeScope();
var dbBuild = new DbContextOptionsBuilder<SimpleDbContext>();
dbBuild.UseMySql(_databaseConnectionString, ServerVersion.Parse("5.7.31-mysql"));
//dbBuild.UseSqlServer(_databaseConnectionString);
// dbBuild.UseLoggerFactory(_loggerFactory);
builder.Register(c => new SimpleDbContext(dbBuild.Options))
.As<DbContext>()
.InstancePerLifetimeScope();
builder.RegisterType<UnitOfWork>()
.As<IUnitOfWork>()
.InstancePerLifetimeScope()
.OnRelease(instance => instance.CleanUp())
;
builder.RegisterGeneric(typeof(Repository<,>)).As(typeof(IRepository<,>))
.InstancePerLifetimeScope()
.InterceptedBy(typeof(CallLogger))
.EnableInterfaceInterceptors();
;
}
}
}