我有一个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 ?
答案 0 :(得分:2)
假设您有实体模型,请确保正确设置DDL生成模板。
此外,您可以删除数据库架构名称的dbo
以匹配您的实际数据库。
答案 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。