使用Dapper调用T-SQL存储过程时,我需要使用' @'?

时间:2017-05-10 10:14:31

标签: c# tsql stored-procedures dapper

我想用Dapper调用存储过程,到目前为止我看到的所有代码都通过使用@字符指定存储过程参数来实现。这意味着我不能简单地定义模型类并将其传递给Dapper的Query或Execute方法,并重新翻译模型实例,这似乎浪费时间和内存。这是我真正需要做的吗?

例如,下面的代码接受模型实例。该模型具有sp_GetUser表的所有属性。我希望Dapper在调用它时将这些模型属性传递给存储过程的参数。是这种情况还是我真的需要定义在' param'中传递的对象?参数β

    public IList<User> GetUsers(UserSP user)
    {
        using (var cn = new SqlConnection(ConnectionString))
        {
            var users = cn.Query<User>("sp_GetUsers",
                    param: new
                    {
                        @Id = user.Id,
                        @NAme = user.Name,
                        @Age = user.Age
                    },
                    commandType: CommandType.StoredProcedure).ToList();
            return users;
        }
    }

1 个答案:

答案 0 :(得分:0)

尝试这样的事情

班级

STA_CODE                  DATE_CRE DATE_FIN DATE_FIN

------------------------- -------- -------- --------

200                       09/05/17 09/05/17 09/05/17 

400                       09/05/17 09/05/17 09/05/18

用dapper填充课程

 public class ReportIndex
    {
        public int SlideNumber { get; set; }
        public string ChartName { get; set; }
        public string SheetName { get; set; }
    }