Exemple #1
0
        public IList <string> Execute()
        {
            foreach (var lesson in _db.Lessons.ToList())
            {
                if (_db.IdMaps.GetAggregateId <Lesson>(lesson.LessonId).Equals(Guid.Empty))
                {
                    // Get fresh new ID
                    Guid entityId = Guid.NewGuid();
                    while (!_db.IdMaps.GetModelId <Lesson>(entityId).Equals(0))
                    {
                        entityId = Guid.NewGuid();
                    }

                    // Save Ids mapping
                    _db.IdMaps.Map <Lesson>(lesson.LessonId, entityId);

                    // Create Memento from ReadModel
                    Guid userId = _db.IdMaps.GetAggregateId <User>(lesson.UserId);
                    var  entity = new Discitur.Domain.Model.LessonMemento(
                        entityId,
                        1,
                        lesson.Title,
                        lesson.Discipline,
                        lesson.School,
                        lesson.Classroom,
                        lesson.Rate,
                        userId,
                        lesson.PublishDate,
                        lesson.Content,
                        lesson.Conclusion,
                        lesson.Published,
                        lesson.CreationDate,
                        lesson.LastModifDate,
                        lesson.LastModifUser,
                        lesson.RecordState,
                        GetLessonFeedbacks(lesson),
                        GetLessonTags(lesson),
                        GetLessonComments(lesson),
                        GetLessonRatings(lesson));

                    // Create a fake External event
                    using (var stream = _store.OpenStream(entityId, 0, int.MaxValue))
                    {
                        // Memento Propagation Event
                        var propagationEvent = new LessonMementoPropagatedEvent(entity);
                        stream.AddMigrationCommit(entity.GetType(), propagationEvent);
                    }

                    // Save Snapshot from entity's Memento image
                    _store.Advanced.AddSnapshot(new Snapshot(entity.Id.ToString(), entity.Version, entity));

                    _logs.Add(String.Format("{0} - Successfully migrated Lesson id: {1}, Guid: {2}, Title:{3}", DateTime.Now, lesson.LessonId, entityId.ToString(), lesson.Title));
                }
            }
            return(_logs);
        }
        public IList<string> Execute()
        {
            foreach (var lesson in _db.Lessons.ToList())
            {
                if (_db.IdMaps.GetAggregateId<Lesson>(lesson.LessonId).Equals(Guid.Empty))
                {
                    // Get fresh new ID
                    Guid entityId = Guid.NewGuid();
                    while (!_db.IdMaps.GetModelId<Lesson>(entityId).Equals(0))
                        entityId = Guid.NewGuid();

                    // Save Ids mapping
                    _db.IdMaps.Map<Lesson>(lesson.LessonId, entityId);

                    // Create Memento from ReadModel
                    Guid userId = _db.IdMaps.GetAggregateId<User>(lesson.UserId);
                    var entity = new Discitur.Domain.Model.LessonMemento(
                        entityId,
                        1,
                        lesson.Title,
                        lesson.Discipline,
                        lesson.School,
                        lesson.Classroom,
                        lesson.Rate,
                        userId,
                        lesson.PublishDate,
                        lesson.Content,
                        lesson.Conclusion,
                        lesson.Published,
                        lesson.CreationDate,
                        lesson.LastModifDate,
                        lesson.LastModifUser,
                        lesson.RecordState,
                        GetLessonFeedbacks(lesson),
                        GetLessonTags(lesson),
                        GetLessonComments(lesson),
                        GetLessonRatings(lesson));

                    // Create a fake External event
                    using (var stream = _store.OpenStream(entityId, 0, int.MaxValue))
                    {
                        // Memento Propagation Event
                        var propagationEvent = new LessonMementoPropagatedEvent(entity);
                        stream.AddMigrationCommit(entity.GetType(), propagationEvent);
                    }

                    // Save Snapshot from entity's Memento image
                    _store.Advanced.AddSnapshot(new Snapshot(entity.Id.ToString(), entity.Version, entity));

                    _logs.Add(String.Format("{0} - Successfully migrated Lesson id: {1}, Guid: {2}, Title:{3}", DateTime.Now, lesson.LessonId, entityId.ToString(), lesson.Title));
                }
            }
            return _logs;
        }