在Oracle/ODP.NET中查询USER_OBJECTS遇到了问题

3
我正在尝试基于USER_OBJECTS创建一个实体框架模型,以便查询包和过程的库存。看起来对USER_OBJECTS的调用必须没有模式,但我找不到一种方法来配置实体/ dbcontext生成没有架构的语句。
1)是否有一个特殊的模式前缀可以在其中调用USER_OBJECTS
2)如果没有,那么如何让Entity Framework从生成的语句中删除模式前缀?
我发现,如果我不提供模式,则默认为执行用户,并且我会得到方便的ORA-00942:表或视图不存在错误。
如果我提供空字符串,则默认为Oracle中没有任何帮助的dbo模式为空字符串方法
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"))
1个回答

0

显然,您可以针对SYS模式查询USER_OBJECTS,因此我刚刚将我的实体连接到该模式以使用必要的表。

SELECT * FROM SYS.USER_OBJECTS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接