public MigrationSelector(IEnumerable<ImportedMigration> importedMigrations, IEnumerable<IMigrationMetadata> executedMigrations)
{
var duplicateMigration = importedMigrations
.GroupBy(m => m.Metadata, (metadata, enumerable) => new { metadata.Timestamp, metadata.ModuleName, Count = enumerable.Count() }, new MigrationMetadataComparer())
.FirstOrDefault(m => m.Count > 1);
if (duplicateMigration != null)
{
throw new InvalidMigrationExportException(string.Format(CultureInfo.CurrentCulture,
"The migration with timestamp {0} and module name '{1}' is defined more than once.",
duplicateMigration.Timestamp,
duplicateMigration.ModuleName));
}
_importedMigrations = importedMigrations;
_executedMigrations = executedMigrations;
}