title: When calling a T-SQL stored procedure with Dapper do I need to use '@'?
body: <p>I am want to call a stored procedure with Dapper and all the code I've seen so far does this by specifying the stored procedure parameters with the @ character. This means that I cannot simply define a model class and pass it into Dapper's Query or Execute method with re-translating the model instance, which seems like a waste of time and memory. Is this what I really need to do?</p>
  
  <p>For example, the code below accepts a model instance. The model has all the properties of the sp_GetUser table. I would expect Dapper to pass those model properties into the stored procedure's parameters when calling it. Is this the case or does I really need to define the object being passed in the 'param' parameter?</p>
  
  <pre><code>    public IList&lt;User&gt; GetUsers(UserSP user)
      {
          using (var cn = new SqlConnection(ConnectionString))
          {
              var users = cn.Query&lt;User&gt;("sp_GetUsers",
                      param: new
                      {
                          @Id = user.Id,
                          @NAme = user.Name,
                          @Age = user.Age
                      },
                      commandType: CommandType.StoredProcedure).ToList();
              return users;
          }
      }
  </code></pre>