In using Dapper's Query() function, I am trying to fill in a class that has a property which is an enumerated value. In my database, this column is stored as a byte. However, in the class, they are an enum. In the old ADO.NET approach, I'd convert during the reader loop:
myClass.myEnum = (MyEnumType) reader.GetByte(2);
When using Dapper, I can't figure out how to do this conversion. For example when I do something like
myClass = conn.Query<MyClassType>("SELECT ... ")
I get an error of the type
Error parsing column 2 (myEnum=1 - Byte)
Is there a way to use Dapper's Query() to fill in a class that contains properties which are enum types?
Sure - as long as your enum agrees, i.e.
then it will all work automatically.
(this limitation is by design, and shared with LINQ-to-SQL as it happens)
Alternatively, if the enum is
: int
and can't be changed, cast it in the SQL:Or finally, use the
dynamic
API:The first is my preferred object, as that enforces the
byte
data-type limitation throughout all your code, which is IMO a good thing.