2017-10-23 2 views
0

다음 문장에서는이 예외가 발생합니다. 중첩 된 쿼리가 지원되지 않습니다. Operation1 = '케이스'Operation2 = '중첩 쿼리가 지원되지 않습니다. Operation1 = '사례'Operation2 = '수집

_contexto.PESO_PIE.Where(w => w.LOTE_SACRIFICIO.LOTE.ID_ESTATUS_LOTE != _estatus_cerrado) 
        .GroupJoin(_contexto.PESO_CALIENTE, 
        PP => PP.ID_SACRIFICIO, 
        pc => pc.ID_SACRIFICIO, 
        (x, y) => new { PP = x, pc = y.DefaultIfEmpty() }) 
        .SelectMany(a => a.pc.Select(b => new { PP = a.PP, pc = b })) 
        .Select(s => new cPeso_Caliente() { 
         Sec_Sacrificio = s.PP.SEC_SACRIFICIO, 
         Cliente = s.pc != null ? s.pc.DESTINO_CLIENTE.DESTINO_CLIENTE1 : null, 
         Consec_Dia = s.pc != null ? s.pc.CONSEC_DIA : (int?)null, 
         Es_Maquila = s.PP.LOTE_SACRIFICIO.ORDEN_COMPRA.PROVEEDOR.ES_MAQUILA, 
         Fecha_Registro = s.pc != null ? s.pc.FECHA_REGISTRO : (DateTime?)null, 
         Folio_Lote = s.PP.LOTE_SACRIFICIO.LOTE.ID_LOTE, // cambiar por folio lote despues de merge 
         Folio_Orden_Compra = s.PP.LOTE_SACRIFICIO.ORDEN_COMPRA.ID_ORDEN_COMPRA, //cambiar por folio orden sacrificio despues de merge 
         IC = s.pc != null ? s.pc.IC : (byte?)null, 
         Id_Destino_Cliente = s.pc != null ? s.pc.ID_DESTINO_CLIENTE : (long?)null, 
         Id_Estado_Producto = s.pc != null ? s.pc.ETIQUETA.ID_ESTADO_PRODUCTO : null, 
         Id_Etiqueta = s.pc != null ? s.pc.ID_ETIQUETA : null, 
         Id_Proveedor = s.PP.LOTE_SACRIFICIO.ORDEN_COMPRA.ID_PROVEEDOR, 
         Id_Sacrificio = s.PP.ID_SACRIFICIO, 
         Id_Usuario = s.pc != null ? s.pc.ID_USUARIO : null, 
         IFE = s.pc != null ? s.pc.IFE : (byte?)null, 
         IGC = s.pc != null ? s.pc.IGC : (byte?)null, 
         IGP = s.pc != null ? s.pc.IGP : (byte?)null, 
         MAD = s.pc != null ? s.pc.MAD : (byte?)null, 
         M_30 = s.pc != null ? s.pc.M_30 : (bool?)null, 
         Proveedor = s.PP.LOTE_SACRIFICIO.ORDEN_COMPRA.PROVEEDOR.NOMBRE_COMERCIAL, 
         R1 = s.pc != null ? s.pc.R1 : false, 
         Version = s.pc != null ? s.pc.VERSION : null, 
         GPE = s.pc != null ? s.pc.GPE : (byte?)null, 
         Tipo_Ganado = s.PP.LOTE_SACRIFICIO.TIPO_GANADO.TIPO_GANADO1, 
         Peso_Caliente = s.pc != null ? s.pc.ETIQUETA.PESO : (decimal?)null, 
         Peso_Pie= s.PP.PESO_PIE1, 
         Id_Producto=s.PP.LOTE_SACRIFICIO.ORDEN_COMPRA.DETALLE_OC.FirstOrDefault().ID_PRODUCTO, 
         Id_Lote_Sacrificio=s.PP.ID_LOTE, 
         Id_Tipo_Lote=s.PP.ID_TIPO_LOTE, 
         Log_Etiqueta_Anomalia= s.pc !=null && s.pc.ETIQUETA.ID_ESTADO_PRODUCTO!="N"? 
         s.pc.ETIQUETA.LOG_ETIQUETA_ANOMALIA.Select(sa=>new cLog_Etiqueta_Anomalia { 
          Id_Anomalia= sa.ID_ANOMALIA, 
          Id_Etiqueta= sa.ID_ETIQUETA, 
          Id_Log_Etiqueta= sa.ID_LOG_ETIQUETA, 
          Id_Resultado_Anomalia= sa.ID_RESULTADO_ANOMALIA, 
          Version= sa.VERSION 
         }): null 
         }).OrderBy(o=>o.Sec_Sacrificio).AsEnumerable() 

를 수집 나는 문제가 나는이 예외에 관련된 질문을 읽고하지만 난 뭔가를 찾을 수 없습니다

Log_Etiqueta_Anomalia= s.pc !=null && s.pc.ETIQUETA.ID_ESTADO_PRODUCTO!="N"? 
         s.pc.ETIQUETA.LOG_ETIQUETA_ANOMALIA.Select(sa=>new cLog_Etiqueta_Anomalia { 
          Id_Anomalia= sa.ID_ANOMALIA, 
          Id_Etiqueta= sa.ID_ETIQUETA, 
          Id_Log_Etiqueta= sa.ID_LOG_ETIQUETA, 
          Id_Resultado_Anomalia= sa.ID_RESULTADO_ANOMALIA, 
          Version= sa.VERSION 
         }): null 

쿼리의 다음 부분에 알고 lambdas에서이 문제를 해결할 수 있습니다.

이 작업을 수행 할 수있는 방법이 있습니까? 아니면 EF 캔트가이 쿼리를 처리합니까?

이 PESO_CALIENTE와 SACRIFICIO가 1이 해당 계정에 보자

Etiqueta_Anomalia = GetEtiqueta_Anomalia(s, sa); 

:

답변

0

사인 중첩 된 쿼리가 지원되지 않습니다 1 관계를, 나는 당신이 Etiqueta_Anomalia의 가치를 얻을 수있는 별도의 방법을 정의해야한다고 생각 대체 된 논리를 새 방법으로 이동합니다. 이렇게하면 쿼리를보다 쉽게 ​​읽을 수 있습니다.

+0

나는 똑같은 생각을하고 있었지만 그것이 가능했는지 알고 싶었습니다. –

관련 문제