我正在使用Entity Framework 6 Code First连接到oracle数据库。 EF正在使用" dbo"作为架构。我宁愿不指定架构,而是让Oracle从连接字符串中解析架构。
有没有办法省略" dbo"或来自查询的任何架构?
示例给出: 而不是"选择*来自dbo.table"我希望看到"从表格#34;中选择*。
目前,我正在解析userId的连接字符串并将其用作架构,但我不想使用此技术。
答案 0 :(得分:6)
FrankO的回答是正确的,因为您可以使用Fluent API指定默认架构。
此外,根据我的经验,这种方法可用于删除默认架构,允许Oracle在连接字符串中指定的情况下解析架构,或者您的公司策略是要访问所有表通过公共同义词。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema(string.Empty);
}
这将产生包含FROM "MY_TABLE"
而不是FROM "dbo"."MY_TABLE"
我正在使用:
答案 1 :(得分:1)
您可以使用Fluent API声明默认架构,如下所示:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("your_schema_here");
}