Pregunta

Estoy tratando de implementar el Like Operador mediante el uso de la consulta de Entity Framework. Pero parece Like no parece ser compatible con un int columna.

Aquí está mi consulta:

using (ObjectContext ctx = new ObjectContext(gbcDbConnection.eObjqueryConnection))
{
    string result = " Select ";
    result += "       master_factory.FACTORY_ID, master_factory.FACTORY_NAME,  ";
    result += "       case when master_factory.FACTORY_TYPE ='"  
           + gbvArticleVarieble.FactoryTypeExterIni+"' then '" 
           + gbvArticleVarieble.FactoryTypeExter+"' else '" 
           + gbvArticleVarieble.FactoryTypeInter+"' end as factory_type ";

    result += " FROM  ";
    result += "     LEWREDBEntities.[MASTER_FACTORY] as master_factory  ";


    result += " WHERE ";
    result += "      (master_factory.FACTORY_TYPE = @factoryType1 or master_factory.FACTORY_TYPE =@factoryType2) and master_factory.STATUS<>@status";


    if (searchVal != "")
    {
         result += "      AND master_factory.[FACTORY_ID]  LIKE '%' + @searchVal + '%' ";
    }



    ObjectQuery<DbDataRecord> query = ctx.CreateQuery<DbDataRecord>(result);
    query.Parameters.Add(new ObjectParameter("status", gbcDBVariable.DeleteIni));
    query.Parameters.Add(new ObjectParameter("factoryType1",gbvArticleVarieble.FactoryTypeExterIni ));
    query.Parameters.Add(new ObjectParameter("factoryType2", gbvArticleVarieble.FactoryTypeInterIni));
    if (searchVal != "")
    {
        query.Parameters.Add(new ObjectParameter("searchValue", searchVal));

    }
    if (logger.IsDebugEnabled)
    {
        query.ToTraceString();
    }

Como puede ver, la ID de fábrica es el tipo de datos enteros. Cuando lo ejecuto, devuelve un error:

Los argumentos similares deben ser de tipo de cadena. Expresión de acceso de miembro cercano

¿Alguien más intentó esto antes?

¿Fue útil?

Solución

Probablemente puedas usar el elenco, no estoy familiarizado con ESQL pero:

Y elence (Master_Factory. [Factory_id] como System.String) como '%' + @searchval + '%'

Este enlace se vuelve blando:¿Cómo encadenar la concatenación en Entity SQL?

Esto es más formal:http://msdn.microsoft.com/en-us/library/bb399172.aspx

Espero eso ayude.

Otros consejos

Lo dijiste tú mismo:

Los argumentos similares deben ser de tipo de cadena.

Esa es tu respuesta :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top