@rofr rofr released this Dec 30, 2016 · 30 commits to master since this release

Assets 3


  • Truncate log on snapshot option
  • EngineConfiguration.Create() removed, just use the constructor
  • Internal methods in addition to public are now proxied
  • Exceptions from proxy are no longer wrapped in TargetInvocationException
  • RedisModel now supports bitset commands
  • Relational model - a new built in model supporting CRUD operations for your user defined IEntity classes
  • ExecutionContext renamed to Execution

Nuget: install-package origodb.core

@rofr rofr released this Sep 8, 2015 · 34 commits to dev since this release

Assets 3

Lot's of news in this release! Grab the binaries below or install the pre-release package from nuget.

New features

New data types and models included in core:

  • GeospatialIndex andGeoPoint types
  • GraphModel - A property graph
  • Key/Value store model
  • RedisModel - a partial implementation of the redis protocol
  • MessageBroker model - persistent pub/sub and message queing
  • Sql Storage module now included in the core, write the journal to a sql database instead of the file system
  • New event - EngineClosing


  • Redesigned Isolation API
  • No snapshot on create unless initial model instance is passed to Engine.Create()
  • Command.Timestamp and Model.Events removed in favor of ExecutionContext.Current - breaking!
  • Proxy now supports overloaded methods and generic arguments
  • Documentation now included in repo, so each version will have it's own documentation hosted at origodb.com

@rofr rofr released this Sep 25, 2014 · 149 commits to master since this release

Assets 3

Redesigned domain events API. See http://dev.origodb.com/docs/domain-events for details.

Some example code

//example domain event
public class CustomerCreated : IEvent
   public readonly int Id;
   public CustomerCreated(int id)
      Id = id;

//subscribing to events
var db = new MyModel();

//all events
db.Events.Subscribe(e => MyEventHandler(e));

//all events of a specific (or derived) type
db.Events.On<CustomerCreated>(e => Console.WriteLine(e));

//filtered events
db.Events.Subscribe(e => MyEventHandler(e), e => MyFilter(e));

//publish events
db.Events.Send(new CustomerCreated(42));

//subscribe to events through engine:
var engine = Engine.For<MyModel>();
engine.CommandExecuted += (s,e) => {
   foreach(IEvent evt in e.Events)
      //process event

//execute command which produces events
engine.Execute(new CreateCustomerCommand(42, "Batman"));

@rofr rofr released this Sep 25, 2014 · 152 commits to master since this release

Assets 3

Fixes version 0.15.0 which was broken and adds some basic support for domain events.

@rofr rofr released this Jun 28, 2014 · 160 commits to master since this release

Assets 3

Redesigned Storage API
IStore split into ISnapshotStore and ICommandStore
Added a Model.Revision property

@rofr rofr released this Jun 25, 2014 · 163 commits to master since this release

Assets 3

Fixes issue #7. When proxying, exceptions thrown by the target are now passed backed to the caller and not wrapped in a TargetInvocationException.

@rofr rofr released this May 2, 2014 · 168 commits to master since this release

Assets 3

Support for multiple IFormatter implementations for the different usages: Snapshots, Journal, Results and Messaging.

@rofr rofr released this Apr 30, 2014 · 172 commits to master since this release

Assets 3

This release contains a bug fix. The correct id was not parsed out from the file name when reading file snapshots. For example when parsing "000000442.snapshot", the last entry id should be 442.