SqlException от Entity Framework - Новая транзакция не разрешена, поскольку в сеансе запущены другие потоки

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 выше, если он соответствует вашему делу.

552
задан Todd 30 August 2018 в 06:48
поделиться

1 ответ

После долгих вытягиваний волос я обнаружил, что виноваты петли 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;
    // ...
}
648
ответ дан 22 November 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: