实体框架忽略架构

Cir*_*rem 6 oracle entity-framework odp.net ef-code-first entity-framework-6

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

有没有办法从查询中省略"dbo"或任何架构?

示例给出:我想看"select*from table"而不是"select*from dbo.table".

目前,我正在解析userId的连接字符串并将其用作模式,但我宁愿不使用此技术.

Ben*_*ndt 6

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

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

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.HasDefaultSchema(string.Empty);
}
Run Code Online (Sandbox Code Playgroud)

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

我正在使用:

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


Fra*_*nkO 1

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

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.HasDefaultSchema("your_schema_here");
}
Run Code Online (Sandbox Code Playgroud)