Мне интересно, не слишком ли это продумано? Разве вы не можете просто сопоставить тип как свойство?
public class DataTypeMap : ClassMap<DataType>
{
public DataTypeMap()
{
// ...
Map(x => x.TypeOfContent);
}
}
В sqlite по крайней мере это будет соответствовать столбцу TEXT, в котором будет храниться AssemblyQualifiedName.
Соответствующий hbm.xml находится здесь:
<property name="Type" type="System.Type, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="Type" />
</property>
Мне также интересен дополнительный вопрос о том, как элегантно отобразить значение по умолчанию. В sqlite, по крайней мере, нет «строгой типизации» столбца (я, вероятно, использую неправильную терминологию, см. Ссылку), поэтому на уровне базы данных, по крайней мере, должна быть возможность просто иметь объект DefaultValue и persist / depersist без потери точности. Однако остается открытым вопрос о том, как создать для этого отображение, которое NHibernate поймет .