我正在尝试创建基于USER_OBJECTS
的实体框架模型,以便我可以查询软件包的库存和程序。看起来对USER_OBJECTS
的调用必须是无模式的,但我无法找到一种方法来配置entity / dbcontext来生成没有模式的语句。
1)是否有一个特殊的模式前缀USER_OBJECTS
可以在?
2)如果没有,那么我如何让实体框架从生成的语句中删除模式前缀?
我发现如果我不提供架构,它默认为正在执行的用户,并且我得到了方便的ORA-00942: table or view does not exist
错误。
如果我提供一个空白字符串,则默认为dbo
,这对Oracle完全没有帮助。
架构方法的空字符串
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"))
答案 0 :(得分:0)
显然,您可以针对USER_OBJECTS
架构查询SYS
,因此我只是将我的实体连接到必要的表格中使用该架构。
SELECT * FROM SYS.USER_OBJECTS