По умолчанию поведение FNH заключается в отображении перечислений в его строку в БД.
Но при отображении перечисления как части составного ключа свойство отображается как int.
например,
в этом случае
public class Address : Entity
{
public Address() { }
public virtual AddressType Type { get; set; }
public virtual User User { get; set; }
Где AddresType имеет значение
public enum AddressType
{
PRESENT, COMPANY, PERMANENT
}
Отображение FNH как
mapping.CompositeId().KeyReference(x => x.User, "user_id").KeyProperty(x => x.Type);
создание схемы этого отображения приводит к
create table address (
Type INTEGER not null,
user_id VARCHAR(25) not null,
и гбм как
<composite-id mapped="true" unsaved-value="undefined">
<key-property name="Type" type="Company.Core.AddressType, Company.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<column name="Type" />
</key-property>
<key-many-to-one name="User" class="Company.Core.CompanyUser, Company.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<column name="user_id" />
</key-many-to-one>
</composite-id>
Где AddressType должен был быть сгенерирован как
type="FluentNHibernate.Mapping.GenericEnumMapper`1[[Company.Core.AddressType,
Как указать FNH для сопоставления в качестве стандартного сопоставителя enum для строки?