Stoveproject Stove Versions Save

Domain Driven Design oriented application framework, meets CRUD needs

2.4.0

5 years ago

Features

  • EntityFrameworkCore 2.1 implemented

Breaking Changes

  • ISupportsExplicitLoading removed since we have LazyLoading anymore.

2.3.6

5 years ago

Features

  • Stove.NHibernate is made netstandard2.0 and NHibernate updated to 5.1.2
  • Other package updates

2.3.2

6 years ago

Features

  • Implement more CQRS oriented structures #121

    • Command, SequencedCommand
    • CorrelationId/CausationId approach for each command
    • CorrelationId/CausationId aware Context implementation. This will provide these Ids in its context e.g ICommandContext {CorrelationId, CausationId} per thread.
  • Create a aspnetcore middleware fore CorrelationId #124

Breaking Changes

  • Remove Entity Change/Create/Update event handling #123
  • Implement async UseUow func #122
  • Introduced IEventHandler.Handle(@event, headers) this will break the existing EventHandler implementations but easy to fix.

2.1.0

6 years ago

Breaking Change

  • There are several breaking changes about Domain Modelling; these are:
    • AggregateRoot & Entity seperated each other
    • AggregateRoot Raise method is removed(I know this is sad?). You should use ApplyChange method.

For ex: Let's think about a Product AggregateRoot for CRUD DDD.

If Product Aggregate will raise any event then we have to define these events handling on its constructor, but these handlings concern Product AR. If you treat these events also as Domain Events you should write Handler for them to handle outside of AR.

protected Product()
{
    Register<PriceChangedEvent>(@event =>
    {
        Price = @event.NewPrice;
    });

    Register<ProductCreatedEvent>(@event =>
    {
        Price = @event.Price;
        ProductId = new ProductId(@event.Id);
        Name = @event.Name;
    });
}

public void ChangePrice(decimal price)
{
    if (price <= 0) throw new ArgumentException("Price can not be equal or less zero", nameof(price));

    ApplyChange(new PriceChangedEvent(price, ProductId.Id));
}

public static Product CreateProduct(string name, decimal price)
{
    if (price <= 0) throw new ArgumentException("Price can not be equal or less zero", nameof(price));

    var product = new Product();
    var productId = new ProductId(Guid.NewGuid());
    product.ApplyChange(new ProductCreatedEvent(name, price, productId.Id));

    return product;
}

These changes can break your handling structure and existing components/properties of your events, if it does then consider your Domain Modelling because it might be wrong.

2.0.8

6 years ago

Features

  • Stove.Couchbase implemented

Enhancements

Bug Fixes

2.0.3

6 years ago

2.0.2

6 years ago

Features

  • Request/Response functionality for Stove.RabbitMQ

2.0.1

6 years ago
  • Castle.Core updated to 4.2.0
  • Autofac.Extras.IocManager updated to 3.2.0

2.0.0

6 years ago

Breaking Changes

  • netstandard 2.0 support
  • StoveBootstrapper.Configuration -> StoveBoostrapper.StoveConfiguration
  • Redis ported from .config based initialization to code based initialization
 .UseStoveRedisCaching(configuration =>
 {
     configuration.ConfigurationOptions
                  .AddEndpoint("127.0.0.1")
                  .SetDefaultDatabase(0)
                  .SetConnectionTimeOut(TimeSpan.FromMinutes(5));

     return configuration;
 })

Features

  • Stove.Serilog package created and ported Stove.NLog to Stove.Serilog on .netcore projects
  • Stove.EntityFrameworkCore package created

Enhancements

Bugfixes

1.2.1

6 years ago
  • Packages Updated #51