public void AddRepositoryToRelease(ReleaseRepository repository, Guid releaseWindowId)
        {
            var releaseWindow = GetReleaseWindow(releaseWindowId);

            var dbReleaseRepository = ReleaseRepository.GetSatisfiedBy(
                    o => o.RepositoryId == repository.ExternalId && o.ReleaseWindowId == releaseWindow.ReleaseWindowId);
            if (dbReleaseRepository != null)
                throw new EntityAlreadyExistsException(typeof(DataReleaseRepository),
                    string.Format("ReleaseWindowId: {0}, RepositoryId: {1}", releaseWindowId, dbReleaseRepository.RepositoryId));

            var newReleaseRepository = MappingEngine.Map<ReleaseRepository, DataReleaseRepository>(repository);
            newReleaseRepository.ReleaseWindowId = releaseWindow.ReleaseWindowId;

            ReleaseRepository.Insert(newReleaseRepository);
        }
        public void UpdateRepository(ReleaseRepository repository, Guid releaseWindowId)
        {
            var releaseWindow = GetReleaseWindow(releaseWindowId);

            var dbReleaseRepository = ReleaseRepository.GetSatisfiedBy(
                    o => o.RepositoryId == repository.ExternalId && o.ReleaseWindowId == releaseWindow.ReleaseWindowId);
            if (dbReleaseRepository == null)
                throw new EntityNotFoundException(typeof(DataReleaseRepository),
                    string.Format("ReleaseWindowId: {0}, RepositoryId: {1}", releaseWindowId, repository.ExternalId));
            if (!string.IsNullOrEmpty(dbReleaseRepository.ChangesFrom) &&
                string.IsNullOrEmpty(repository.ChangesFrom))
            {
                repository.ChangesFrom = dbReleaseRepository.ChangesFrom;
            }
            MappingEngine.Map(repository, dbReleaseRepository);

            ReleaseRepository.Update(dbReleaseRepository);
        }