我试图以这种方式执行存储过程:
var filterValues= context.Database.SqlQuery<FilterProcedureDTO>(
"[dbo].[sp_GetFilterValues] @FieldID", new SqlParameter("FieldID", filterID))
.ToList();
问题是,当用户更改视图上的过滤器时,每次调用时出现的过滤器值都会有不同的列名,尽管所有过滤器都是带有int列和字符串列的对象,看起来它们绑定到指定的模型,即FilterProcedureDTO..which看起来像
public class FilterProcedureDTO
{
public FilterProcedureDTO() {
//empty constructor
}
public int production_lineID { get; set; }
public string production_line_desc { get; set; }
}
因此,如果通话产生 taskID 和 task_desc ,则此功能不再有效。 另一件事是一些ID是 int32 ,一些是 int16 ,所以由于周期性异常,代码没有完美执行
如何让存储过程返回通用对象,只是识别数据类型而不是变量名?
答案 0 :(得分:0)
SQLQuery
方法始终根据属性名称尝试列到属性匹配。
因此,您需要更改存储过程,以便始终返回相同的名称和数据类型。您应该能够使用别名并在sql中进行强制转换。
参考: