title: Specified Cast is not Invalid (Enum with int value, Dapper)
body: <p>I have a class with a (simple, first cut) implementation of user roles:</p>
  
  <pre><code>class User { 
    public Role Role { get; set; }
    // ...
    public User() { this.Role = Role.Normal; }
    public void Save() { Membership.CreateUser(...) } // System.Web.Security.Membership
  } 
  
  enum Role : int {
    Invalid = 0,
    Normal = 1,
    SuperUser = 4096
  }
  </code></pre>
  
  <p>Before adding the role, everything worked fine (if that matters).</p>
  
  <p>Now, when I try to fetch users, this line fails:</p>
  
  <pre><code>toReturn = conn.Query&lt;User&gt;("SELECT TOP 1 * FROM dbo.UserProfile WHERE 1=1");
  </code></pre>
  
  <p>The stack trace (from ELMAH):</p>
  
  <pre><code>System.Data.DataException: Error parsing column 2 (Role=1 - Int16) ---&gt; System.InvalidCastException: Specified cast is not valid.
     at Deserialize06df745b-4fad-4d55-aada-632ce72e3607(IDataReader )
     --- End of inner exception stack trace ---
     at Dapper.SqlMapper.ThrowDataException(Exception ex, Int32 index, IDataReader reader) in c:\Dev\Dapper\Dapper\SqlMapper.cs:line 2126
     at Deserialize06df745b-4fad-4d55-aada-632ce72e3607(IDataReader )
     at Dapper.SqlMapper.&lt;QueryInternal&gt;d__d`1.MoveNext() in c:\Dev\Dapper\Dapper\SqlMapper.cs:line 827
     at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
     at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
     at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable`1 commandTimeout, Nullable`1 commandType) in c:\Dev\Dapper\Dapper\SqlMapper.cs:line 770
  </code></pre>
  
  <p>In the database, the column type for <code>Role</code> is <code>smallint</code>.</p>
  
  <p>I'm using Dapper 1.12.1 from NuGet. </p>