0

는 11g 오라클 데이터베이스를 지원하지 않습니다 APPLY :dotConnect : CROSS 내가 devart <strong>에게 dotConnect 8.4 + EF6.1</strong> 사용하여이 코드 블록을 실행하기 위해 노력하고있어

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(); 

을하지만이 오류가 발생합니다 :

설명 : 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 시작된 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.

예외 상세 정보 : System.NotSupportedException : CROSS APPLY는 Oracle Database 11g 이하에서는 지원되지 않습니다. 이 LINQ 문을 올바르게 실행하려면 Oracle 12c 이상이 필요합니다. Oracle Database 11g 이하에서이 명령문을 실행해야하는 경우 사용하는 Oracle 버전에서 지원되는 SQL로 변환 할 수 있도록 다시 작성하십시오.

내가 사용하고 있습니다 : Oracle 용 dotConnect 8.4.171.0 + EF6.1 (코드-처음으로) + 오라클 11g

그것은 오라클 dotConnect 7.5.164.0 + EF4 (코드 - 함께 일하는 First) + Oracle 11g

답변

1

OUTER APPLY/CROSS APPLY 구성은 12c 버전부터 Oracle 서버에서 지원됩니다. Oracle 용 dotConnect 구현은 가능한 경우 OUTER APPLY/CROSS APPLY 생성을 피하지만 OUTER APPLY/CROSS APPLY를 사용하지 않으면 일부 LINQ 쿼리를 변환 할 수 없습니다. 이 경우 LINQ 문을 다시 작성해야합니다.

또한 Entity Framework 엔진을 개발하면 이전에 생성되지 않은 경우 OUTER APPLY/CROSS APPLY 구문이 생성되기 시작할 수 있습니다. 따라서 작은 테스트 프로젝트를 만들고 CodePlex 지원 팀에 문의하는 것이 좋습니다. https://entityframework.codeplex.com/

+0

쿼리를 다시 작성 했으므로 지금 작업 중입니다. 그러나 관계 때문에 첫 번째 LINQ 문에서 여러 * from *없이 단일 쿼리에서이 작업을 수행 할 수 없습니다. 지원해 주셔서 감사합니다. –