为 Oracle 数据库生成的无效查询

Invalid query generated for Oracle database

我正在使用 Entity Framework 5 和代码优先进行数据库建模和映射。当我尝试通过 API 调用执行查询时,我收到一条错误消息,指出 ORA-00942: table or view does not exist。查看查询,它的格式似乎不是 Oracle 查询的典型格式。

我的 .config 连接字符串是

<connectionStrings>
  <add name="Entities" connectionString="Data Source=development;
                                         User ID=user;Password=password"
                       providerName="Oracle.DataAccess.Client" />
</connectionStrings>

在 OnModelCreating() 中,我映射如下

modelBuilder.Entity<Job>().ToTable("Table1", "schema");

我在调试器中看到的正在生成的查询不会通过 copy/paste 到 Oracle 执行。

SELECT "Extent1"."ColumnName" AS "ColumnName"
FROM "schema"."Table1" "Extent1"

我原以为我正在使用 Oracle.DataAccess.Client 提供程序这一事实会适当地生成查询。我如何说服 EF5 它应该以特定方式生成查询以与 Oracle 兼容?

查询本身是有效的,只是因为标识符名称用双引号引起来,所以名称区分大小写。

因为您可能没有为您的 table 和架构名称定义特定的大小写,所以在 EF:

中创建映射时,您可能应该只是大写(默认的 Oracle 大小写)
modelBuilder.Entity<Job>().ToTable("TABLE1", "SCHEMA"); // upper case.