实体查询'Like'不支持int列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实体查询'Like'不支持int列相关的知识,希望对你有一定的参考价值。

我试图通过使用实体框架查询来实现Like运算符。但似乎Like似乎没有得到int专栏的支持。

这是我的查询:

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

如您所见,Factory id是整数数据类型。当我执行它时,它返回一个错误:

LIKE参数必须是字符串类型。近成员访问表达式

有没有人以前试过这个?

答案

您可以使用CAST,我不熟悉ESQL但是:

AND CAST(master_factory。[FACTORY_ID] as System.String)LIKE'%'+ @ searchVal +'%'

这个链接变得糊涂了:How to String Concatenation in Entity SQL?

这是更正式的:http://msdn.microsoft.com/en-us/library/bb399172.aspx

希望能帮助到你。

另一答案

你自己说的:

LIKE参数必须是字符串类型。

那是你的答案:)

以上是关于实体查询'Like'不支持int列的主要内容,如果未能解决你的问题,请参考以下文章

arcgis 属性查询 指定列不存在 a column specified not exist

oracle like模糊查询 concat的使用

oracle like模糊查询 concat的使用

C#中 SQL语句 带参数的like 查询怎么写

<mysql问题>如何同时使用between和like吗?

如何在数据库里用like语句查询成语?