【问题标题】:Accessing Oracle Synonyms using Entity Framework 6 code first首先使用 Entity Framework 6 代码访问 Oracle Synonyms
【发布时间】:2015-02-17 15:35:34
【问题描述】:

我目前正在开发一个将使用 Entity Framework 6.1.1 和 Oracle 11g 数据库后端的项目。我将跨多个模式访问表,其中一些模式还具有跨模式的外键关系(查找表、企业数据等)。

传统上,我们使用同义词作为将这些跨模式表暴露给特定登录的一种方式。我的问题是......如何使用代码优先映射在 EF6 中映射这些同义词?我直接在单个模式中映射到表没有问题,但这当然还不够,因为我的表跨越了多个模式。到目前为止,我的代码优先映射无法识别同义词。

是否有人能够对 Oracle 同义词进行代码优先映射?

【问题讨论】:

  • 你能先使用 EF 代码和同义词吗?我目前遇到了同样的问题。

标签: oracle oracle11g entity-framework-6


【解决方案1】:

您可以尝试为特定实体设置架构:

modelBuilder.Entity<DATA>().ToTable("DATA", "schema");

或者装饰类:

[Table("DATA", Schema="SCHEMA"] public class DATA{..}

【讨论】:

    【解决方案2】:

    您可以使用 EF Fluent API 来定义架构:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.HasDefaultSchema("MY_SCHEMA_NAME");
    }
    

    如果您想使用 Oracle 同义词,可以删除架构:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.HasDefaultSchema(string.Empty);
    }
    

    这将生成包含FROM "MY_TABLE" 而不是FROM "dbo"."MY_TABLE" 或FROM "MY_SCHEMA_NAME"."MY_TABLE" 的SQL

    我正在使用:

    • EntityFramework 6.1.3
    • Oracle.ManagedDataAccess 12.1.2400
    • Oracle.ManagedDataAccess.EntityFramework 12.1.2400

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-04
      • 1970-01-01
      • 2016-11-03
      • 1970-01-01
      • 2013-09-14
      相关资源
      最近更新 更多