您好我有一个问题,我正在开发一个项目,因为我们正在使用Entity Framework 5连接到sql以及oracle。对于sql它工作正常,但对于oracle我需要删除模式名称,因为我所做的是在表格Attibute模型我传递空/ null甚至在dbcontext方法的OnModelCreating方法我传递空/ null值到架构。但是通过linq生成的查询将dbo模式作为默认模式附加。有没有办法避免实体框架附加&#d; dbo'作为架构?
答案 0 :(得分:0)
如果可以升级到EF6。您可以尝试拦截所有命令文本并删除所有[dbo]
文本。
IDbCommandInterceptor
。DbInterception.Add(new NoSechemaInterceptor());
然后在NonQueryExecuting
,ReaderExecuting
和ScalarExecuting
方法中添加以下代码:
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("");
}