Oracle использует «биты» (а не тип данных per se) в разных представлениях словаря данных.
Например, представление dba_users имеет:
..
, DECODE (BITAND (u.spare1, 128), 128, 'YES', 'NO')
..
, DECODE (BITAND (u.spare1, 256), 256, 'Y', 'N')
..
, который показывает способ обхода этого в некотором роде. Если вам не нужно часто изменять «логические» биты, вы можете использовать тот же подход, что и Oracle с Oracle 6 (по крайней мере). Создайте таблицу с столбцом NUMBER и VIEW поверх того, что скрывает сложность операций BITAND.
ps. С другой стороны, Oracle JDBC имеет тип данных «бит» https://docs.oracle.com/cd/E16338_01/appdev.112/e13995/oracle/jdbc/OracleTypes.html#BIT as как вы уже знаете, PL / SQL имеет Boolean. Хотя это, вероятно, вам не поможет. См. Подход BITAND выше, если он соответствует вашему делу.
После долгих вытягиваний волос я обнаружил, что виноваты петли foreach
. Что должно произойти, так это позвонить в EF, но вернуть его в IList
этого целевого типа, а затем в цикле IList
.
Пример:
IList<Client> clientList = from a in _dbFeed.Client.Include("Auto") select a;
foreach (RivWorks.Model.NegotiationAutos.Client client in clientList)
{
var companyFeedDetailList = from a in _dbRiv.AutoNegotiationDetails where a.ClientID == client.ClientID select a;
// ...
}