В настоящее время нет официального сопоставления EDM-EF от Oracle - у DevArt и DataDirect есть пользовательские уровни поставщиков соединений Oracle, которые вы можете купить. Есть также квази-открытые версии, доступные на CodeProject, которые реализуют EDM для EF с Oracle. Я предполагаю, что вы используете один из них.
Чтобы ответить на ваш вопрос, вам нужно изменить реализацию ProviderManifest
, чтобы она возвращала соответствующий тип .NET при вызове GetEdmType()
. Проблема в том, что этот метод передает вам тип Oracle и ожидает, что вы вернете тип .NET, который понимает EF (он понимает все примитивы, включая bool). К сожалению, нежелательно отображать CHAR(1)
в логическое значение, поскольку в принципе у вас могут быть другие столбцы CHAR(1)
, которые не bools.
Обходной путь для решения этой проблемы - создать пользовательский тип oracle (JKBOOL, скажем, :), который сопоставлен с CHAR(1)
- вам придется изменить таблицы для изменения CHAR(1)
до JKBOOL
. Теперь вы можете безопасно связать JKBOOL
с System.Boolean
в GetEdmType()
.