В настоящее время у меня возникают некоторые проблемы при попытке использовать код EF6 для сопоставления существующей базы данных Oracle и создания таблицы для иерархии. Сценарий таблицы я хочу карту выглядит следующим образом:EF6 TPH с 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 Database Информация имеет 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)
И я в конце моего остроумия - Кто-нибудь знает, если ли: 1- Можно ли реализовать TPH в Oracle с использованием Номер столбца как дискриминатор? 2- Я что-то упускаю?
Сейчас я пойду вперед (и реализую иерархию с использованием фабрики на моем уровне репозитория), но я готов попробовать любое предлагаемое решение - спасибо заранее!
Спасибо за ответ - к сожалению, он не работал ... Я создал новую таблицу с использованием новой структуры и скопировал значения между обеими таблицами (просто чтобы убедиться), но, к сожалению, она генерирует одно и то же сообщение об ошибке , – rshimoda
Также меняется на Требуется («CN_PROVIDER»). HasValue ((float) 1) В оригинальном случае не работает .. - но сообщение об ошибке изменилось на (103,12): ошибка 2016: Условие не может быть задано по значениям члена CN_PROVIDER. Условия значения не поддерживаются для типа 'OracleEFProvider.binary_float'. – rshimoda