我正在尝试基于
1)是否有一个特殊的模式前缀可以在其中调用
2)如果没有,那么如何让Entity Framework从生成的语句中删除模式前缀?
我发现,如果我不提供模式,则默认为执行用户,并且我会得到方便的
如果我提供空字符串,则默认为Oracle中没有任何帮助的
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"))