C# dotConnect:Oracle Database 11g不支持交叉应用

C# dotConnect:Oracle Database 11g不支持交叉应用,c#,oracle11g,ef-code-first,dotconnect,entity-framework-6.1,C#,Oracle11g,Ef Code First,Dotconnect,Entity Framework 6.1,我正在尝试使用devartdotConnect 8.4+EF6.1执行此代码块: var menus = (from m in dbSet from p in m.RegraAcesso.Perfis from u in p.Usuarios where u.Id == userId && m.Pai.RegraAcesso.Token.Equals(module) selec

我正在尝试使用devartdotConnect 8.4+EF6.1执行此代码块:

var menus = (from m in dbSet
             from p in m.RegraAcesso.Perfis
             from u in p.Usuarios
             where u.Id == userId && m.Pai.RegraAcesso.Token.Equals(module)
             select m)
            .Include(p => p.Pai)
            .ToList();
但它抛出了一个错误:

描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源

异常详细信息:系统。不支持异常:Oracle Database 11g及更低版本不支持交叉应用。正确运行此LINQ语句需要Oracle 12c或更高版本。如果需要使用Oracle Database 11g或更低版本运行此语句,请重写它,以便将其转换为您使用的Oracle版本支持的SQL

我正在使用: dotConnect for Oracle 8.4.171.0+EF6.1(代码优先)+Oracle 11g


它与Oracle 7.5.164.0+EF4(代码优先)+Oracle 11g的dotConnect一起工作
从12c版本开始,Oracle server支持外部应用/交叉应用构造。如果可能的话,我们在dotConnect for Oracle中的实现可以避免生成外部应用/交叉应用,但是如果不使用外部应用/交叉应用,某些LINQ查询将无法转换。在这种情况下,您应该重写LINQ语句


此外,随着实体框架引擎的开发,在没有生成早期应用的情况下,可能会开始生成外部应用/交叉应用构造。因此,我们还建议您创建一个小的测试项目,并联系CodePlex支持人员:

我重新编写了查询,它现在正在工作。但是,由于关系的关系,如果没有初始LINQ语句中的multiple from,我无法在单个查询中完成此操作。谢谢你的支持。