はじめに
動作環境
- ASP.NET(VB) MVC
- Oracle.ManagedDataAccess.EntityFramework 12.2.20190115
発生したエラー
context.シノニム.ToList()したとき、下記エラー発生
ORA-00955: すでに使用されているオブジェクト名です。
対処法
スキーマが所有しているテーブルを合わせてDbContext内に宣言したところシノニムからSELECTが実行できるようになった。
調査内容
ToList()する前にどのようなSQLが実行されているか確認したところ下記のようなものが確認された。
select count(*) from all_tables where (owner='[owner名]' and table_name='[シノニム名]')
SELECTの結果は0件。
ownerが所有しているテーブルもDbContextで宣言したときどのように変化するか確認したところ下記のようなSQLが実行された。
select count(*) from all_tables where (owner='[owner名]' and table_name='[ownerが所有しているテーブル名]') or (owner='[owner名]' and table_name='[シノニム名]')
またSELECTの結果は「ownerが所有しているテーブル名」の分がカウントされ1件となった。
all_synonymsを事前チェックしない理由については調査する時間が取れなかった。
参考サイト
--【ASP.NET(MVC)】ODP.NET Entityデータモデルからのテーブル作成・操作について
--Oracleで実行されたSQLの履歴を確認する
--サポートされないEntity Frameworkの機能