示例#1
0
 public Repository(SchoolManagmentContext storage)
 {
     _storage = storage;
 }
示例#2
0
 public UnitOfWork(SchoolManagmentContext context)
 {
     _context = context;
     Students = new StudentRepository(_context);
 }
示例#3
0
 public StudentRepository(SchoolManagmentContext context) : base(context)
 {
     _context = context;
 }
        protected async Task <IEnumerable <DomainEvent> > ReadEvents(Type aggregateType, SchoolManagmentContext connection, Guid aggregateId, int start, int count)
        {
            var events       = new List <DomainEvent>();
            var streamEvents = new List <DomainEvent>();
            StreamEventsSlice currentSlice;
            var nextSliceStart = streamEvents.OrderByDescending(e => e.DateCreated).Last().ExpectedVersion;

            //Read the stream using pagesize which was set before.
            //We only need to read the full page ahead if expected results are larger than the page size

            do
            {
                int nextReadCount = count - streamEvents.Count();

                if (nextReadCount > EventStorePageSize)
                {
                    nextReadCount = EventStorePageSize;
                }

                var domainEvents = connection.DomainEvents.Where(e => e.AggregateRootId == aggregateId).Where(e => e.ExpectedVersion >= 0).Take(count);

                streamEvents.AddRange(currentSlice.Events);
            } while (!currentSlice.IsEndOfStream);

            //Deserialize and add to events list
            foreach (var returnedEvent in streamEvents)
            {
                events.Add(DeserializeEvent(returnedEvent));
            }

            return(events);
        }