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; }