最初に EF6 コードを使用して既存の Oracle データベースをマップし、階層ごとのテーブルを作成しようとすると、現在いくつかの問題が発生しています。マップしたいテーブルのスクリプトは次のようになります。
CREATE TABLE TST.DATABASECON
(
DATABASEID NUMBER NOT NULL,
CN_DATASOURCE VARCHAR2(60 BYTE) NOT NULL,
CN_CATALOG VARCHAR2(60 BYTE),
CN_USERNAME VARCHAR2(60 BYTE),
CN_PASSWORD VARCHAR2(60 BYTE),
CN_INTEGRATED NUMBER DEFAULT 0,
CN_PROVIDER NUMBER DEFAULT 0,
);
これは、データベース接続情報を含む Oracle サーバー上のテーブルであり、すべての Oracle データベース情報には CN_PROVIDER = 0 が含まれていますが、SQL データベース情報には CN_PROVIDER = 1 が含まれています。
したがって、この階層を次のようにマッピングするのは自然なことでした
modelBuilder.Entity<ReportConnection>()
.Map<SqlConnection>(m => m.Requires("CN_PROVIDER").HasValue((int)1))
.Map<OracleConnection>(m => m.Requires("CN_PROVIDER").HasValue((int)0));
ただし、データにアクセスしようとすると、常に次のエラーが発生します。
(60,12) : error 2016: Condition can not be specified
on values of member 'CN_PROVIDER'. Value conditions
are not supported for type 'OracleEFProvider.number'.
私はすでにこれを使用してマップしようとしました:
Requires("CN_PROVIDER").HasValue((Int16)1)
Requires("CN_PROVIDER").HasValue((Int32)1)
Requires("CN_PROVIDER").HasValue((Int64)1)
Requires("CN_PROVIDER").HasValue((decimal)1)
Requires("CN_PROVIDER").HasValue((Decimal)1)
そして、私は機知に富んでいます-次の場合に誰かが知っていますか? 2-何か足りない?
今は先に進みます (そして、リポジトリ レイヤーでファクトリを使用して階層を実装します) が、提案されたソリューションを試してみるつもりです - 事前に感謝します!