实体框架忽略架构

时间:2014-05-28 14:26:28

标签: oracle entity-framework ef-code-first entity-framework-6 odp.net

我正在使用Entity Framework 6 Code First连接到oracle数据库。 EF正在使用" dbo"作为架构。我宁愿不指定架构,而是让Oracle从连接字符串中解析架构。

有没有办法省略" dbo"或来自查询的任何架构?

示例给出: 而不是"选择*来自dbo.table"我希望看到"从表格#34;中选择*。

目前,我正在解析userId的连接字符串并将其用作架构,但我不想使用此技术。

2 个答案:

答案 0 :(得分:6)

FrankO的回答是正确的,因为您可以使用Fluent API指定默认架构。

此外,根据我的经验,这种方法可用于删除默认架构,允许Oracle在连接字符串中指定的情况下解析架构,或者您的公司策略是要访问所有表通过公共同义词。

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

这将产生包含FROM "MY_TABLE"而不是FROM "dbo"."MY_TABLE"

的SQL

我正在使用:

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

答案 1 :(得分:1)

您可以使用Fluent API声明默认架构,如下所示:

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