【问题标题】:Linq generated sql request "ORA-00942: table or view does not exist"Linq 生成 sql 请求“ORA-00942:表或视图不存在”
【发布时间】:2014-05-16 08:59:23
【问题描述】:

发送 sql 请求时出现“表或视图不存在”异常。 如何从我的 sql 请求中删除 ""dbo"." 以使其正常工作?

例外:

ORA-00942: 表或视图不存在

SQL:

SELECT 
 CAST( "Extent1"."COM_CHRONO" AS number(10,0)) AS "C1", 
"Extent1"."SER_CODE" AS "SER_CODE", 
"Extent1"."REP_NOM" AS "REP_NOM", 
"Extent1"."COM_COMMENTAIRE" AS "COM_COMMENTAIRE", 
FROM "dbo"."COMMANDE" "Extent1"

linq:

var sel = from c in ctx.Orders 
          select c;

【问题讨论】:

  • 只需删除“dbo.”。你需要找出COMMANDE表是在哪里创建的,如果在当前schema中,直接使用COMMANDE,如果在其他schema中,使用schema.table_name访问,但要确保当前schema有适当的授权在那张桌子上。

标签: c# sql oracle linq


【解决方案1】:

目前尚不清楚您使用的是代码优先还是数据库优先方法。

如果您的情况是 Code-First 方法,那么您必须为 Table 属性指定 Schema,如下所示:

[Table("TableName", Schema="MySchema")]
public class SomeClassName {
    ...
}

如果您使用后一种方法,那么您必须更改 EntityModel 的 Database Schema Name 属性(默认为“dbo”)。只需在“解决方案资源管理器”中选择您的 EDMX 文件并检查其属性即可。

【讨论】:

    猜你喜欢
    • 2015-08-06
    • 1970-01-01
    • 2019-01-22
    • 2012-04-23
    • 2013-04-14
    • 2015-11-09
    • 2011-12-10
    • 2015-01-30
    相关资源
    最近更新 更多