Skip to content
This repository has been archived by the owner on May 7, 2020. It is now read-only.

Latest commit

 

History

History
78 lines (65 loc) · 4.48 KB

README.md

File metadata and controls

78 lines (65 loc) · 4.48 KB

Stove Build status alt text

Package Status
Stove NuGet version
Stove.Entityframework NuGet version
Stove.Hangfire NuGet version
Stove.NLog NuGet version
Stove.Mapster NuGet version
Stove.Redis NuGet version
Stove.Dapper NuGet version
Stove.RabbitMQ NuGet version
Stove.NHibernate NuGet version
Stove.RavenDB NuGet version
  • 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

Composition Root

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();
 

It will be documented in detail!