コード例 #1
0
        public override void SetUp()
        {
            base.SetUp();

            DatabaseHelper.CleanEvents();
            DatabaseHelper.CleanEventStreams();

            var eventRepository = new EventRepository(DatabaseHelper.GetConnectionStringBuilder());

            EventSerializer = new Serialization.Newtonsoft.EventSerializer();

            var logger = new SerilogLogger(Log.ForContext<EventStore>());

            var eventStore = new EventStore(
                EventSerializer,
                eventRepository,
                logger,
                Guid.NewGuid);

            AggregateContext = new AggregateContext(
                eventStore,
                null, // TODO: replace with actual SnapshotStore
                new AggregateHydrator(),
                new DummyDispatcher());
        }
コード例 #2
0
 public static Product Create(
     IAggregateContext context,
     ProductName productName)
 {
     return(Product.CreateWithEvent <Product, ProductCreated>(
                context,
                new ProductCreated(
                    ProductIdentifier.New(),
                    productName)));
 }
コード例 #3
0
 public static Order Create(
     IAggregateContext context,
     OrderIdentifier orderIdentifier,
     CustomerIdentifier customerIdentifier)
 {
     return(CreateWithEvent <Order, OrderCreated>(
                context,
                new OrderCreated(
                    orderIdentifier,
                    customerIdentifier)));
 }
コード例 #4
0
ファイル: AggregateRoot.cs プロジェクト: ArienHartgers/DDD
        protected static TAggregateRoot CreateWithEvent <TAggregateRoot, TEvent>(IAggregateContext context, TEvent firstEvent)
            where TAggregateRoot : AggregateRoot <TIdentifier>
            where TEvent : Event
        {
            var now           = context.GetDateTime();
            var aggregateRoot = CallAggregateConstructor <TAggregateRoot, TEvent>(new TypedEvent <TEvent>(now, firstEvent));

            aggregateRoot._context = context;

            aggregateRoot.ApplyInitialEvent(new LoadedEvent(now, firstEvent));
            return(aggregateRoot);
        }
コード例 #5
0
ファイル: AggregateRoot.cs プロジェクト: ArienHartgers/DDD
 void IAggregateLoader.SetAggregateContext(IAggregateContext context)
 {
     _context = context;
 }
コード例 #6
0
 public ProductRepository(IEventStore eventStore, IAggregateContext context)
     : base(eventStore, context)
 {
 }
 protected override AggregateValue CreateAggregate(IAggregateContext context)
 {
     return this.CreateAggregate(context.DataType);
 }
コード例 #8
0
ファイル: Repository.cs プロジェクト: ArienHartgers/DDD
 public Repository(IEventStore eventStore, IAggregateContext aggregateContext)
 {
     AggregateContext = aggregateContext;
     _eventStore      = eventStore;
 }
コード例 #9
0
ファイル: OrderRepository.cs プロジェクト: ArienHartgers/DDD
 public OrderRepository(IEventStore eventStore, IAggregateContext context)
     : base(eventStore, context)
 {
 }