如何使用Entity Framework连接到Oracle时通过连接字符串更改架构?

Jad*_*ias 7 .net oracle schema connection-string entity-framework-4

当我生成EDMX文件时,它为每个EntitySet设置Schema

<EntitySet 
    Name="TableName"
    EntityType="Model.Store.TableName"
    store:Type="Tables"
    Schema="MySchema" />
Run Code Online (Sandbox Code Playgroud)

问题是,如果我想切换到生产数据库,我必须更改EDMX,因为我不知道如何在连接字符串中选择Schema.

怎么做?

Jad*_*ias 10

我只需要编辑EDMX并从每个EntitySet中删除Schema

<EntitySet 
    Name="TableName"
    EntityType="Model.Store.TableName"
    store:Type="Tables" />
Run Code Online (Sandbox Code Playgroud)

现在它连接到给定用户的默认架构.

  • 非常感谢这个答案.我们公司遇到了同样的问题,我们无法理解.我们已经浪费了几个小时并正在制定计划B(使用SQL服务器而不是Oracle),但你的答案节省了一天! (2认同)

j-u*_*i-n 1

如果代码优先方法是一个选项,您可以重写 DbContext 类中的 OnModelCreating 方法。在 OnModelCreating 方法中,您可以放入逻辑来检测 oracle 并相应地重命名模式。已在此处询问了代码优先方法