При сопоставлении логического типа данных .NET с номером оракула (1,0) в структуре сущностей возникает ошибка - PullRequest
16 голосов
/ 01 февраля 2012

При сопоставлении логического типа данных .NET с номером оракула (1,0) в файле .edmx возникает следующая ошибка.

Ошибка 2019: указанное сопоставление элемента недопустимо.Тип 'Edm.Boolean [Nullable = False, DefaultValue =]' члена 'COLUMN123' в типе 'DBModel.TABLE123' не совместим с 'OracleEFProvider.number [Nullable = False, DefaultValue =, Precision = 1, Scale = 0] 'члена' CHECK_INSTALLATION 'в типе' DBModel.Store.TABLE123 '.

Может ли логический тип данных быть сопоставлен с числом оракула (1,0) с использованием каркаса сущностей?

Ответы [ 5 ]

7 голосов
/ 16 мая 2014

Добавление раздела oracle.dataaccess.client для меня было недостаточно. Работало следующее (взято из Развертывание и настройка ODP.NET для работы без установки с Entity Framework ):

<configuration>
  <configSections>
    <section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>
...
<oracle.dataaccess.client>
  <settings>
    <add name="bool" value="edmmapping number(1,0)" />
  </settings>
</oracle.dataaccess.client>
<oracle.manageddataaccess.client>
  <version number="*">
    <edmMappings>
      <edmMapping dataType="number">
        <add name="bool" precision="1"/>
        <add name="byte" precision="2" />
        <add name="int16" precision="5" />
      </edmMapping>
    </edmMappings>
  </version>
</oracle.manageddataaccess.client>
1 голос
/ 14 октября 2016

Получала эту ошибку в VS 2015. Проект будет компилироваться без ошибок, но в списке ошибок все равно будет отображаться эта ошибка. Добавил следующий раздел в мой app.config для решения проблемы. Обратите внимание, что элемент edmMapping не совместим со схемой XSD, которую предоставляет oracle (поэтому вы получаете предупреждение об этом, если ваш файл конфигурации открыт), но это все же лучше, чем показывать эти ошибки.

    <oracle.manageddataaccess.client>
    <version number="*">
        <edmMappings>
            <edmNumberMapping>
                <add NETType="bool" MinPrecision="1" MaxPrecision="1" DBType="Number" />
            </edmNumberMapping>
            <edmMapping dataType="number">
                <add name="bool" precision="1"/>
            </edmMapping>
        </edmMappings>
    </version>
</oracle.manageddataaccess.client>
1 голос
/ 22 мая 2014

Эта конфигурация работала для меня с использованием VS 2012, EF5 с Oracle 11 и oraclManageDataAccess 12.1.НОМЕР 1, не ноль, был преобразован в бит.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework"
             type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
             requirePermission="false" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>
  <connectionStrings>
  </connectionStrings>
  <oracle.manageddataaccess.client>
    <version number="*">
      <edmMappings>
        <edmMapping dataType="number">
          <add name="bool" precision="1" />
          <add name="byte" precision="2" />
          <add name="int16" precision="5" />
        </edmMapping>
      </edmMappings>
    </version>
  </oracle.manageddataaccess.client>
</configuration>
1 голос
/ 01 октября 2013

Ниже приведен пример app.config, который содержит настраиваемое сопоставление, где NUMBER (1, 0) сопоставляется с Bool, NUMBER (3,0) сопоставляется с байтом, а максимальная точность для Int16, Int32, Int64 составляетизменено на 4, 9, 18 со значений по умолчанию 5, 10, 19 соответственно:

         <?xml version="1.0" encoding="utf-8"?>
         <configuration>
         <connectionStrings>
         </connectionStrings>
         <oracle.dataaccess.client>
         <settings>
         <add name="bool" value="edmmapping number(1,0)" />
         <add name="byte" value="edmmapping number(3,0)" />
         <add name="int16" value="edmmapping number(4,0)" />
         <add name="int32" value="edmmapping number(9,0)" />
         <add name="int64" value="edmmapping number(18,0)" />
         </settings>
         </oracle.dataaccess.client>
         </configuration>

Таким же образом вы можете сопоставить .net bool с Oracle Number (1,0)

0 голосов
/ 16 апреля 2015

Я получил ошибки, когда скопировал решение для использования в новом проекте, поэтому я перешел с неуправляемого драйвера оракула на управляемый драйвер оракула, затем проблема исчезла, но когда я опубликовал на сервере, сервер сделалне установлен управляемый драйвер оракула, поэтому мне пришлось переключиться обратно на неуправляемый драйвер оракула.Проблема, конечно же, вернулась, поэтому я обратился к обозревателю серверов и убедился, что могу подключиться к источникам оракула (используя неуправляемый драйвер), затем открыл файл edmx, щелкнул правой кнопкой мыши и нажал кнопку «Проверить», которая по-прежнему отображала ошибки ошибки.список, затем я просто щелкнул правой кнопкой мыши и щелкнул модель обновления из базы данных, проверил, что таблицы перечислены на вкладке обновления, затем нажал кнопку "Готово", прошло некоторое время, чтобы обновление завершилось, но когда оно было сделано, ошибки исчезли.

Я полагаю, что эта ошибка возникает при попытке использовать параметры неуправляемого драйвера в файлах web.config и app.config, но при подключении к управляемому драйверу в проводнике сервера (это соединение, которое обновляет edmx)модель из базы данных (действие использует), или наоборот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...