指示LINQ to Entities生成Oracle兼容SQL

时间:2012-08-10 15:10:05

标签: sql oracle entity-framework linq-to-sql linq-to-entities

我有一个linq to entity查询(EF 4.3)

var query = from item in db.TableTest
            select item.VAL;

转换为此SQL语句

SELECT
"Extent1"."VAL" AS "VAL"
FROM "dbo"."TEST_TABLE" "Extent1"

数据库 Oracle

当我执行查询时,我收到数据表不存在的消息。问题是(“dbo”)部分。如果我删除它并直接执行此查询(不是通过LINQ,而是通过oracleconnection等)

SELECT
"Extent1"."VAL" AS "VAL"
FROM "TEST_TABLE" "Extent1"

然后一切都好。我得到了价值。

如何指示Linq To Entities输出Oracle兼容SQL

2 个答案:

答案 0 :(得分:2)

假设您有实体模型,请确保正确设置DDL生成模板。

此外,您可以删除数据库架构名称的dbo以匹配您的实际数据库。

enter image description here

答案 1 :(得分:1)

询问后不久,我找到了解决问题的方法

我有这个POCO课程

[Table("TEST_TABLE")]
public class MyEntity
{
    [Key, Column("VAL")]
    public string key_valye { get; set; }
}

生成的sql注入了“dbo”。当我将表属性更改为

 [Table("TEST_TABLE", Schema="ATT")]

这产生了“ATT”。“TEST_TABLE”代替,这实际上是正确的sql。