Package | Status |
---|---|
Stove | |
Stove.Entityframework | |
Stove.Hangfire | |
Stove.NLog | |
Stove.Mapster | |
Stove.Redis | |
Stove.Dapper | |
Stove.RabbitMQ | |
Stove.NHibernate | |
Stove.RavenDB |
- Autofac for Ioc
- AmbientContext Unit Of Work pattern
- Conventional Registration Mechanism with Autofac.Extras.IocManager
- EventBus for DDD use cases
- EntityFramework
- NHibernate
- Generic Repository Pattern, DbContext, Multiple DbContext control in one unit of work, TransactionScope support
- Dapper and EF both can use in one application.
- Dapper and EF have their own repositories.
IDapperRepository<Product>
,IRepository<Product>
- Dapper-EntityFramework works under same transaction and unit of work scope, if any exception appears in domain whole transaction will be rollback, including Dapper's insert/deletes and EF's.
- Stove.Dapper supports Dynamic Filters to filter automatically and default ISoftDelete or other user defined filters.
- Stove.Dapper also works with NHibernate under same transaction. Like EF transaction sharing.
- RabbitMQ support
- HangFire support
- Redis support
- A lot of extensions
- Strictly SOLID
IRootResolver resolver = IocBuilder.New
.UseAutofacContainerBuilder()
.UseStove<StoveDemoBootstrapper>(autoUnitOfWorkInterceptionEnabled: true)
.UseStoveEntityFramework()
.UseStoveDapper()
.UseStoveMapster()
.UseStoveDefaultEventBus()
.UseStoveDbContextEfTransactionStrategy()
.UseStoveTypedConnectionStringResolver()
.UseStoveNLog()
.UseStoveBackgroundJobs()
.UseStoveRedisCaching()
.UseStoveRabbitMQ(configuration =>
{
configuration.HostAddress = "rabbitmq://localhost/";
configuration.Username = "admin";
configuration.Password = "admin";
configuration.QueueName = "Default";
return configuration;
})
.UseStoveHangfire(configuration =>
{
configuration.GlobalConfiguration
.UseSqlServerStorage("Default")
.UseNLogLogProvider();
return configuration;
})
.RegisterServices(r => r.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()))
.CreateResolver();
var someDomainService = resolver.Resolve<SomeDomainService>();
someDomainService.DoSomeStuff();