3

여러 데이터베이스를 대상으로하는 Entity Framework를 기반으로하는 데이터 액세스에서 Entity 프레임 워크를 사용하고 있습니다.엔티티 프레임 워크 외부 조인과 그룹을 왼쪽으로 놓기 : ORA-00907 : 오른쪽 괄호가 누락되었습니다.

우리는 현재 2 년 동안 Entity Framework를 사용하는 팀이며 생성 된 코드는 SQL Server 2008과 완벽하게 작동합니다. 이제 데이터베이스를 Oracle 11 Express r2g2로 마이그레이션 한 후 동일한 코드를 테스트하고 모든 지침 사전에

System.Data.EntityCommandExecutionException was unhandled by user code 
Message=An error occurred while executing the command definition. See the inner exception for details. 
Source=System.Data.Entity 
StackTrace: 
at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior) 
at System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues) 
at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption) 
at System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() 
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) 
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) 
at Futura.BusinessLogic.Services.DemandeHospitalisationServices.DemandeHospitalisationService.GetMedecinList() in C:\Work\FuturaSmartDesign\Futura.BusinessLogic\Services\DemandeHospitalisationServices\DemandeHospitalisationService.cs:line 87 
at GetMedecinList(DomainService , Object[]) 
at System.ServiceModel.DomainServices.Server.ReflectionDomainServiceDescriptionProvider.ReflectionDomainOperationEntry.Invoke(DomainService domainService, Object[] parameters) 
at System.ServiceModel.DomainServices.Server.DomainOperationEntry.Invoke(DomainService domainService, Object[] parameters, Int32& totalCount) 
at System.ServiceModel.DomainServices.Server.DomainService.Query(QueryDescription queryDescription, IEnumerable`1& validationErrors, Int32& totalCount) 
InnerException: Oracle.DataAccess.Client.OracleException 
Message=ORA-00907: missing right parenthesis 
Source=Oracle Data Provider for .NET 
ErrorCode=-2147467259 
DataSource=Calys 
Number=907 
Procedure="" 
StackTrace: 
at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck, Exception innerException) 
at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, String procedure, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, Boolean bCheck, Exception innerException) 
at Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean requery, Boolean fillRequest, CommandBehavior behavior) 
at Oracle.DataAccess.Client.OracleCommand.ExecuteDbDataReader(CommandBehavior behavior) 
at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) 
at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior) 
InnerException: 
Message=Oracle 11.2.0.2.0 ne prend pas en charge APPLY 
InnerException: 

어떤 도움을 이해할 수있을 것이다, 감사 : 그 가입 또는 그룹이 호출 스택을 보여주는 선택 던져 예외로 왼쪽 외부합니다.

+1

은 우리에게 –

+0

한 통화, 요청 또는 SQL 문을 제시해주십시오 오류를 생성하는 SQL을 보여하시기 바랍니다 오류 – Regfor

+0

을 생산 SQL 문이 아닌 linq 쿼리였습니다. 그리고 그것은 SQL 서버와 완벽하게 작동했습니다. –

답변

2

에 이해할 수있을 것이다 "는 포함". 내 경우에는 7 "포함"이 오류가 발생합니다.

 var myEntity = __DbContext.Get<MyEntity>() 
      .Include("Property1") 
      .Include("Property2") 
      .Include("Property3") 
      .Include("Property4") 
      .Include("RelatedEntities.Property1") 
      .Include("RelatedEntities.Property2") 
      .Include("RelatedEntities.Property3") 
      .First(c => c.Id == id); 

내가 내 데이터를 가져 오기 위해 두 개의 질의를 만들기 위해 그것을 변경 :

 var myEntity = __DbContext.Get<MyEntity>() 
      .Include("Property1") 
      .Include("Property2") 
      .Include("Property3") 
      .Include("Property4") 
      .First(c => c.Id == id); 

     myEntity.RelatedEntities = __DbContext.Get<RelatedEntity>() 
      .Include("Property1") 
      .Include("Property2") 
      .Include("Property3") 
      .Where(re => re.MyEntityId == myEntity.Id) 
      .ToList();