实体查询'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列的主要内容,如果未能解决你的问题,请参考以下文章