3

我正在尝试创建一个基于的实体框架模型,USER_OBJECTS以便我可以查询包和过程的清单。看起来调用USER_OBJECTS必须是无模式的,但我想不出一种方法来配置实体/dbcontext 以生成没有模式的语句。

1)是否有USER_OBJECTS可以调用的特殊模式前缀?

2)如果不是,那么我怎样才能让实体框架从生成的语句中删除模式前缀?

我发现如果我不提供模式,它默认为执行用户,我会得到方便的ORA-00942: table or view does not exist错误。

如果我提供一个空白字符串,它默认dbo在 Oracle 中根本没有帮助。

Schema 方法的空字符串

Protected Overrides Sub OnModelCreating(modelBuilder As DbModelBuilder)
   ... CODE TRUNCATED FOR READABILITY ...
   Dim entityConfig = entityMethodGeneric.Invoke(modelBuilder, Nothing)
   Dim toTableMethod = entityConfig.[GetType]().GetMethod("ToTable", New Type() {GetType(String), GetType(String)})

   toTableMethod.Invoke(entityConfig, New Object() {"USER_OBJECTS", ""})

   MyBase.OnModelCreating(modelBuilder)
End Sub

产量

SELECT   "Extent1"."OBJECT_ID" AS "OBJECT_ID"
     ,   "Extent1"."OBJECT_TYPE" AS "OBJECT_TYPE"
     ,   "Extent1"."OBJECT_NAME" AS "OBJECT_NAME"
     ,   "Extent1"."STATUS" AS "STATUS"  

FROM "dbo"."USER_OBJECTS" "Extent1"  

WHERE (("Extent1"."OBJECT_NAME" = :p__linq__0) AND ('PACKAGE' = "Extent1"."OBJECT_TYPE"))
4

1 回答 1

0

显然您可以查询架构,所以我只是连接USER_OBJECTSSYS我的实体以将该架构用于必要的表。

SELECT * FROM SYS.USER_OBJECTS
于 2013-11-08T23:29:18.720 回答