Consulta de entidad 'como' no es compatible con la columna int
-
26-10-2019 - |
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?
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 :)