locked
Navigation property on preprocess query RRS feed

  • Question

  • People, 

    I have an issue with the preprocess_query method and the navigation properties. I'm developing a web app on Visual Studio Lightswitch 2010.

    I have a screen wich has filters on it. Some of the filter area based on the properties of the entities and others on properties of other entities (related to the main entity)

    Main entity: PedidosDeLicencias

    Field:  Empleado

    Empresa

    Estado

    Licencia

    ElEmpleadosSetItem (relation)

    Related entity:ElEmpleadosSet

    Fields: (only 2, it has mora than 20)

    Empleado

    Puesto


    this is part of my code:

    partial void PedidosDeLicencias_PreprocessQuery(int? Puesto, int? EmpleadoNum, int? EstadoLicenciaNum, short? LicenciaNum, string CCEstructura, int? CCnivel1Num, int? CCnivel2Num, int? CCnivel3Num, int? CCnivel4Num, int? CCnivel5Num, string DDEstructura, int? DDnivel1Num, int? DDnivel2Num, int? DDnivel3Num, int? DDnivel4Num, int? DDnivel5Num, ref IQueryable<PedidosDeLicenciaSetItem> query) { if (EmpleadoNum.HasValue) { query = query.Where(x => x.Empleado == EmpleadoNum); } if ((Puesto.HasValue) && (Puesto != null)) { //query = query.Where(x => x.ElEmpleadosSetItem.Puesto == Puesto); query = query.Where(x => x.ElEmpleadosSetItem.Puesto == Puesto); }

    if (LicenciaNum.HasValue)
                {

                    query = query.Where(x => x.Inasistencia == LicenciaNum);
                }
                if (EstadoLicenciaNum.HasValue)
                {
                    query = query.Where(x => x.Estado == EstadoLicenciaNum);
                }

    }

    The filter by empleado, licencia and estado works like a charm, but when i want to filter on "Puesto" (Position in english)  it show this error:

    "No se pueden cargar los datos. Compruebe la conexión de red e intente cargarlos de nuevo."

    in english:

    "Unable to load data. Check the network connection and try loading again."

    and the little red cross apears.

    ¿Does anyone know what i'm doing wrong? ¿It is posible to use navigation properties on preprocess query?

    best Regards

    Gabriel



    Tuesday, August 13, 2013 12:34 PM

Answers

  • I solved it!!!! 

    this is code: 

    partial void PedidosDeLicencias_PreprocessQuery(int? Puesto, int? EmpleadoNum, int? EstadoLicenciaNum, short? LicenciaNum, string CCEstructura, int? CCnivel1Num, int? CCnivel2Num, int? CCnivel3Num, int? CCnivel4Num, int? CCnivel5Num, string DDEstructura, int? DDnivel1Num, int? DDnivel2Num, int? DDnivel3Num, int? DDnivel4Num, int? DDnivel5Num, ref IQueryable<PedidosDeLicenciaSetItem> query)
            {
                IEnumerable<ElEmpleadosSetItem> qEmpleados = this.DataWorkspace.DbEmpleados.ElEmpleadosSet.GetQuery().Execute();
                if (EmpleadoNum.HasValue)
                {
                    query = query.Where(x => x.Empleado == EmpleadoNum);
                }
                if (LicenciaNum != null)
                {
                    query = query.Where(x => x.Inasistencia == LicenciaNum);
                }
                if (EstadoLicenciaNum != null)
                {
                    query = query.Where(x => x.Estado == EstadoLicenciaNum);
                }
                if (Puesto != null)
                {
                    int[] empleadosPuesto = qEmpleados.Where(x => x.Puesto == Puesto).Select(y => y.Empleado).Distinct().ToArray();
                    if (empleadosPuesto.Length > 0)
                    {
                        query = query.Where(x => empleadosPuesto.Contains(x.Empleado));
                    }
                }
    }

    Friday, August 16, 2013 5:45 PM

All replies

  • Please somebody!!!!
    Friday, August 16, 2013 12:12 PM
  • I solved it!!!! 

    this is code: 

    partial void PedidosDeLicencias_PreprocessQuery(int? Puesto, int? EmpleadoNum, int? EstadoLicenciaNum, short? LicenciaNum, string CCEstructura, int? CCnivel1Num, int? CCnivel2Num, int? CCnivel3Num, int? CCnivel4Num, int? CCnivel5Num, string DDEstructura, int? DDnivel1Num, int? DDnivel2Num, int? DDnivel3Num, int? DDnivel4Num, int? DDnivel5Num, ref IQueryable<PedidosDeLicenciaSetItem> query)
            {
                IEnumerable<ElEmpleadosSetItem> qEmpleados = this.DataWorkspace.DbEmpleados.ElEmpleadosSet.GetQuery().Execute();
                if (EmpleadoNum.HasValue)
                {
                    query = query.Where(x => x.Empleado == EmpleadoNum);
                }
                if (LicenciaNum != null)
                {
                    query = query.Where(x => x.Inasistencia == LicenciaNum);
                }
                if (EstadoLicenciaNum != null)
                {
                    query = query.Where(x => x.Estado == EstadoLicenciaNum);
                }
                if (Puesto != null)
                {
                    int[] empleadosPuesto = qEmpleados.Where(x => x.Puesto == Puesto).Select(y => y.Empleado).Distinct().ToArray();
                    if (empleadosPuesto.Length > 0)
                    {
                        query = query.Where(x => empleadosPuesto.Contains(x.Empleado));
                    }
                }
    }

    Friday, August 16, 2013 5:45 PM