コード例 #1
0
        public static Migration Load(MigrationMemento memento, IImmutableDictionary <BigInteger, Migration> migrationsByHashCode)
        {
            switch (memento.Type)
            {
            case nameof(UseSchemaMigration):
                return(UseSchemaMigration.FromMemento(memento, migrationsByHashCode));

            case nameof(CreateTableMigration):
                return(CreateTableMigration.FromMemento(memento, migrationsByHashCode));

            case nameof(CreateColumnMigration):
                return(CreateColumnMigration.FromMemento(memento, migrationsByHashCode));

            case nameof(CreatePrimaryKeyMigration):
                return(CreatePrimaryKeyMigration.FromMemento(memento, migrationsByHashCode));

            case nameof(CreateUniqueIndexMigration):
                return(CreateUniqueIndexMigration.FromMemento(memento, migrationsByHashCode));

            case nameof(CreateIndexMigration):
                return(CreateIndexMigration.FromMemento(memento, migrationsByHashCode));

            case nameof(CreateForeignKeyMigration):
                return(CreateForeignKeyMigration.FromMemento(memento, migrationsByHashCode));

            case nameof(CustomSqlMigration):
                return(CustomSqlMigration.FromMemento(memento, migrationsByHashCode));

            default:
                throw new ArgumentException($"Unknown type {memento.Type}");
            }
        }
コード例 #2
0
        public ForeignKeySpecification CreateForeignKey(PrimaryKeySpecification referencing, bool cascadeDelete = false, bool cascadeUpdate = false)
        {
            var childMigration = new CreateForeignKeyMigration(
                _migration,
                referencing.Migration,
                cascadeDelete,
                cascadeUpdate,
                Prerequisites);

            MigrationHistoryBuilder.Append(childMigration);
            childMigration.AddToParent();
            return(new ForeignKeySpecification(MigrationHistoryBuilder));
        }