У меня есть существующая база данных Oracle 11g.Entity Framework с сопоставлением управляемых драйверов Oracle NUMBER (10) до конца не работает
создать новое решение и новый проект (.net 4.5), к которому я добавляю следующие NuGet пакеты:
- пакет ID = "EntityFramework" версия = "6.1.3"
- пакет ID = "Oracle.ManagedDataAccess" версия = "12.1.24160419"
- пакет ID = "Oracle.ManagedDataAccess.EntityFramework" версия = "12.1.2400"
Мой web.config указывает раздел для edmMappings ,
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " />
</dataSources>
<edmMappings>
<edmMapping dataType="number">
<add name="int64" precision="10" />
</edmMapping>
</edmMappings>
</version>
</oracle.manageddataaccess.client>
Я затем добавить новый ADO.NET Entity Data Model, используя EF Designer от Databse (модель первая).
У меня есть таблица PROCESS
с столбцом LINK_ID
, которая определена как NUMBER (10) в Oracle.
Сгенерированные .edmx-файлы и entites (сгенерированные через tt-файл) используют обычный int (Int32), а не длинный (Int64), как указано в моем сопоставлении.
Я хотел бы, чтобы сгенерированная модель использовала длинный.
я могу пойти и изменить это вручную, но я получаю следующее сообщение об ошибке во время выполнения:
Схема Указана недопустимая. Ошибки: \ r \ nTestMappings2.msl (18,12): ошибка 2019: Указание членства недействительно. Тип 'Edm.Int64 [Nullable = True, DefaultValue =]' элемента 'LINK_ID' в типе 'Model.PROCESS' несовместим с 'OracleEFProvider.number [Nullable = True, DefaultValue =, Precision = 10, Scale = 0] ' пользователя' LINK_ID 'в типе' Model.Store.PROCESS '.
Как я могу заставить сгенерированную модель использовать правильный тип и почему изменение типа дает мне ошибку отображения времени выполнения?
я не включил мой полный файл .config, поскольку это подключение к самой Oracle, кажется, работает, если не включать в себя номер столбца (10) но я могу опубликовать его, если кто-то заинтересован. – Lastwall