Oracle EF Database first is not completing

87 views Asked by At

When I attempt to reverse engineer models off of an Oracle database, I am getting errors when the table in question has more than one trigger on the a column. I am putting a web UI on an upgraded Oracle 7 database (it has been migrated to Oracle 18C). The original system is an old Unix terminal UI. My solution is read only. Solution is .NET Core 3.1 and Oracle.EntityFrameworkCOre is 3.19.110.

When I run the above command on a table that has more than one trigger on a column, it errors.

Scaffold-DbContext "User Id=<user>; Password=<pwd>; Data Source=<datasource>;" Oracle.EntityFrameworkCore -OutputDir Models -Context GlobalContext

Using verbose mode I get the following.

Sequence contains more than one matching element
   at System.Linq.ThrowHelper.ThrowMoreThanOneMatchException()

The generated SQL is

    select u.*, v.trigger_name, v.table_name, v.column_name, v.table_owner 
from (SELECT    sys_context('userenv', 'current_schema') as schema,    c.table_name,    c.column_name,    c.column_id,    c.data_type,    c.char_length,    c.data_length,    c.data_precision,    c.data_scale,    c.nullable,    c.identity_column,   c.data_default,    c.virtual_column,    c.hidden_column  
FROM user_tab_cols c INNER JOIN  (select distinct object_name as table_name from user_objects where object_type in ('TABLE', 'VIEW', 'MATERIALIZED VIEW'))  t  ON t.table_name=c.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))  )u 
left join USER_TRIGGER_COLS v  on u.table_name = v.table_name and u.column_name = v.column_name and u.schema = v.table_owner 
ORDER BY u.column_id 

The results are as follows (I've made the table/triggers generic, but you see the issue)

enter image description here

Short of dropping the triggers, is there a way to reverse engineer the table?

0

There are 0 answers