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.