实体框架:执行返回不同列和列数据类型的存储过程

时间:2015-03-18 15:24:09

标签: c# entity-framework asp.net-mvc-4

我试图以这种方式执行存储过程:

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 ,所以由于周期性异常,代码没有完美执行

如何让存储过程返回通用对象,只是识别数据类型而不是变量名?

1 个答案:

答案 0 :(得分:0)

SQLQuery方法始终根据属性名称尝试列到属性匹配。

因此,您需要更改存储过程,以便始终返回相同的名称和数据类型。您应该能够使用别名并在sql中进行强制转换。

参考:

https://stackoverflow.com/a/9987939/150342

相关问题