Skip to Main Content

ODP.NET

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Scaffold creates incorrect model with null index name for Materialized View with an Index

Ricky BogardOct 6 2025

This code is produced in the DbContext.cs file. Bolded null below shows incorrect code generated for Index Name instead of MV_INX_1

modelBuilder.Entity<MATERIALIZED_VIEW_1>(entity =>

{

entity.HasNoKey().ToView("MATERIALIZED_VIEW_1");

entity.HasIndex(e => new { e.String_Col_1, e.String_Col_2}, null );

… more code for the table removed here …

}

From the trace: Bolded line shows possible swapping of index name and table name

2025-10-06 17:16:14.836343 ThreadID:1 (EXIT) OracleDatabaseModelFactory.GetColumnsCombined()

2025-10-06 17:16:14.837998 ThreadID:1 (ENTRY) OracleDatabaseModelFactory.GetKeysCombined()

2025-10-06 17:16:14.841726 ThreadID:1 (SQL) OracleDatabaseModelFactory.GetKeysCombined() : SELECT sys_context('userenv', 'current_schema') as owner, t.table_name, t.column_name, c.delete_rule, t.constraint_name, c.constraint_type, t.position FROM user_cons_columns t JOIN user_constraints c ON t.CONSTRAINT_NAME = c.CONSTRAINT_NAME INNER JOIN (select distinct object_name as table_name from user_objects where object_type in ('TABLE', 'VIEW', 'MATERIALIZED VIEW')) x ON x.table_name = t.table_name WHERE t.table_name <> '__EFMigrationsHistory' AND (t.table_name IN (:t0) AND CONCAT(sys_context('userenv', 'current_schema'), CONCAT('.', t.table_name)) IN (:sdott0)) AND c.constraint_type IN ('P','U') ORDER BY owner, t.table_name, t.constraint_name, t.position

2025-10-06 17:16:14.974098 ThreadID:1 (EXIT) OracleDatabaseModelFactory.GetKeysCombined()

2025-10-06 17:16:14.980034 ThreadID:1 (ENTRY) OracleDatabaseModelFactory.GetIndexesCombined()

2025-10-06 17:16:14.980596 ThreadID:1 (SQL) OracleDatabaseModelFactory.GetIndexesCombined() : select u.*, c.column_expression from (SELECT sys_context('userenv', 'current_schema') as owner, t.uniqueness, a.index_name, a.table_name, a.column_position, c.constraint_type, a.column_name FROM user_ind_columns a INNER JOIN user_indexes t ON a.index_name = t.index_name INNER JOIN (select distinct object_name as table_name from user_objects where object_type in ('TABLE', 'VIEW', 'MATERIALIZED VIEW')) x ON x.table_name = a.table_name LEFT OUTER JOIN user_constraints c ON a.index_name = c.index_name WHERE t.table_name <> '__EFMigrationsHistory' AND (t.table_name IN (:t0) AND CONCAT(sys_context('userenv', 'current_schema'), CONCAT('.', t.table_name)) IN (:sdott0)) )u left join USER_IND_EXPRESSIONS c on u.index_name = c.index_name ORDER BY u.owner, u.table_name, u.index_name, u.column_position

2025-10-06 17:16:15.273897 ThreadID:1 (MAP) OracleDatabaseModelFactory.GetIndexesCombined() : tableName: MATERIALIZED_VIEW_1, tableSchema: EPS, indexName: MV_INX_1, isUnique: False, columnName: String_Col_1

2025-10-06 17:16:15.275877 ThreadID:1 (MAP) OracleDatabaseModelFactory.GetIndexesCombined() : tableName: MATERIALIZED_VIEW_1, tableSchema: EPS, indexName: MV_INX_1, isUnique: False, columnName: String_Col_2

Found index on table 'MV_INX_1' with name 'TST.MATERIALIZED_VIEW_1', is unique: False.

2025-10-06 17:16:15.280734 ThreadID:1 (EXIT) OracleDatabaseModelFactory.GetIndexesCombined()

2025-10-06 17:16:15.282895 ThreadID:1 (ENTRY) OracleDatabaseModelFactory.GetForeignKeysCombined()

2025-10-06 17:16:15.283321 ThreadID:1 (SQL) OracleDatabaseModelFactory.GetForeignKeysCombined() : SELECT sys_context('userenv', 'current_schema') as owner, t.table_name, t.column_name, t.constraint_name, c.constraint_type, c.r_owner, c.r_constraint_name, c.delete_rule, tr.table_name principal_table_name, tr.column_name principal_column_name FROM user_cons_columns t INNER JOIN user_constraints c ON c.constraint_name = t.constraint_name INNER JOIN user_cons_columns tr ON tr.constraint_name = c.r_constraint_name INNER JOIN (select distinct object_name as table_name from user_objects where object_type in ('TABLE', 'VIEW', 'MATERIALIZED VIEW')) x ON x.table_name = t.table_name WHERE t.table_name <> '__EFMigrationsHistory' AND (t.table_name IN (:t0) AND CONCAT(sys_context('userenv', 'current_schema'), CONCAT('.', t.table_name)) IN (:sdott0)) AND c.constraint_type = 'R' ORDER BY t.owner, t.table_name, t.constraint_name, t.position, tr.position

2025-10-06 17:16:15.411561 ThreadID:1 (EXIT) OracleDatabaseModelFactory.GetForeignKeysCombined()

2025-10-06 17:16:15.412135 ThreadID:1 (EXIT) OracleDatabaseModelFactory.GetTablesCombined()

2025-10-06 17:16:15.421111 ThreadID:1 (EXIT) OracleDatabaseModelFactory.Create()

The table has this SQL

CREATE TABLE "TST"."MATERIALIZED_VIEW_1"
( "String_Col_1" VARCHAR2(12 BYTE),
"String_Col_2" VARCHAR2(1 BYTE)
)

CREATE INDEX "TST"."MV_INX_1" ON "TST"."MATERIALIZED_VIEW_1" ("String_Col_1", "String_Col_2")

Comments
Post Details
Added on Oct 6 2025
4 comments
46 views