Oracle
Preserve explicit constraints and be deliberate about identity, sequences and implicit DDL commits.
Examples use Classic and Fluent tabs. Your choice follows you through the manual.
Connection and schema
Use ProviderTypes.Oracle with the Oracle managed ADO.NET driver and the intended schema. MsOracle is a historical variant. Oracle DDL is not generally atomic across a migration; WholeSession is rejected. Some quoted qualified metadata lookups are explicitly rejected.
Create an identity definition
Identity is a column attribute and is validated before table creation. It need not be a primary key on every engine, but the example pairs it with an explicit key. Use a server/driver combination qualified for native identity.
Classic
Database.AddTable("Entries",
new Column("Id", DbType.Int32) { IsIdentity = true, IsNullable = false },
new Column("Text", DbType.String, 255),
new PrimaryKeyConstraint("PK_Entries", "Id"));Fluent
migration.Create.Table("Entries")
.WithColumn("Id").AsInt32().Identity().NotNullable()
.WithColumn("Text").AsString(255)
.WithPrimaryKey("PK_Entries", "Id");Inside Up() / BuildUp(MigrationBuilder migration)
Object cleanup
RemoveTable leaves unrelated sequences intact. Oracle removes table-owned triggers and native identity objects. For a legacy sequence that the migration explicitly owns, OracleTransformationProvider.RemoveTableWithOwnedSequences validates named sequences and propagates cleanup errors. It does not infer sequence ownership from naming patterns.
Values and options
Oracle empty character strings become NULL. Time uses DATE with a fixed 1970-01-01 date and whole-second precision; fractional Time inputs are rejected. Intervals use native storage. Changes that require an unsupported in-place type conversion need an explicit data migration.
Included/clustered index options are rejected rather than ignored. Ordered foreign-key pairs and delete actions are preserved by structured metadata. A SQL Server clustered-index request is not translated into an Oracle index-organized table.