Entity Framework с Model-First и Oracle

Я пытаюсь использовать Entity Framework с Model-First в базе данных Oracle. Я установил ODP.NET и Oracle Visual Studio Tools из файла ODTwithODAC1120320_32bit.zip какая версия 11.2.0.3.20,

Я сделал небольшую тестовую модель, установил строку подключения к БД Oracle, изменил шаблоны генерации кода модели на Generate Oracle via T4 (TPT).xaml а также SSDLToOracle.tt, Генерация кода работает, однако сгенерированный SQL не может использоваться:

CREATE TABLE "dbo"."Entity1Set" (
   "Id" UNIQUEIDENTIFIER NOT NULL,
   "NvarcharProperty" NVARCHAR(MAX) NOT NULL
);

ни UNIQUEIDENTIFIER ни NVARCHAR действительные ключевые слова Oracle. Кроме того, Oracle обрабатывает схемы иначе, чем SQL Server, поэтому "dbo". вещи не будут работать.

Как вы обычно справляетесь с этим? Изменение SQL после каждого поколения кода?

Есть ли другие способы использования EF с Oracle и Model-First?

1 ответ

Решение

Похоже, ваша модель была сгенерирована из SqlServer и затем передана в SSDLToOracle.tt. Файл SSDLToOracle.tt, вероятно, не проверяет, действительно ли он имеет дело со специфичной для Oracle StoreItemCollection, и просто использует то, что он получает, что приводит к генерации гибридного специфичного для Oracle SQL, использующего типы SqlServer. Вы можете проверить, для какой базы данных была сгенерирована модель, открыв файл edmx и проверив Provider а также ProviderManifestToken атрибутов.

Другие вопросы по тегам