【问题标题】:Entity Framework Ignore Schema实体框架忽略架构
【发布时间】:2014-07-17 20:10:02
【问题描述】:
我正在使用 Entity Framework 6 Code First 连接到 oracle 数据库。 EF 使用“dbo”作为架构。我宁愿不指定架构,而是让 Oracle 从连接字符串中解析架构。
有没有办法从查询中省略“dbo”或任何架构?
给出的示例:
而不是“从 dbo.table 中选择 *”,我希望看到“从表中选择 *”。
目前,我正在解析 userId 的连接字符串并将其用作架构,但我不想使用这种技术。
【问题讨论】:
标签:
oracle
entity-framework
ef-code-first
entity-framework-6
odp.net
【解决方案1】:
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
【解决方案2】:
您可以使用 Fluent API 来声明默认架构,如下所示:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("your_schema_here");
}