删除默认架构' dbo'生成linq到sql查询时

时间:2014-07-17 10:34:28

标签: sql asp.net-mvc oracle linq entity-framework

您好我有一个问题,我正在开发一个项目,因为我们正在使用Entity Framework 5连接到sql以及oracle。对于sql它工作正常,但对于oracle我需要删除模式名称,因为我所做的是在表格Attibute模型我传递空/ null甚至在dbcontext方法的OnModelCreating方法我传递空/ null值到架构。但是通过linq生成的查询将dbo模式作为默认模式附加。有没有办法避免实体框架附加&#d; dbo'作为架构?

2 个答案:

答案 0 :(得分:0)

如果可以升级到EF6。您可以尝试拦截所有命令文本并删除所有[dbo]文本。

  • 创建一个派生自IDbCommandInterceptor
  • 的类
  • 注册拦截器DbInterception.Add(new NoSechemaInterceptor());
  • 然后在NonQueryExecutingReaderExecutingScalarExecuting方法中添加以下代码:

    command.CommandText = command.CommandText.Replace("[dbo].", string.Empty);

答案 1 :(得分:0)

我遇到了同样的问题。

尝试覆盖 DBContext 的 OnModelCreating 事件中的默认架构:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
   base.OnModelCreating(modelBuilder);

   // empty schema
   modelBuilder.HasDefaultSchema("");
}