Enumeration
Enum properties round-trip as strings by default, with an escape hatch to force numeric storage or fully custom handling.
Default behavior
An enum property maps to DbType.String out of the box — the name of the enum member is what gets written and read, not its underlying numeric value.
public enum Gender { Unknown, Male, Female }
public class Person
{
public Gender Gender { get; set; } // stored as "Male", "Female", ...
}
Forcing an int
Add [TypeMap(DbType.Int32)] to the property, or set it globally with FluentMapper.Type<Gender>().DbType(DbType.Int32), to store the numeric value instead.
Full custom handling
For anything beyond a straight string/int split — a legacy column with inconsistent casing, say — an IPropertyHandler takes over the conversion completely and bypasses the automatic enum mapping.