У меня есть Fluent NHibernate ComponentMap <>, отображающий тип Nullable <>.Мое решение компилируется, и мои сущности сохраняются в моей базе данных, однако я обнаружил, что вместо значений, которые есть в моей сущности, сохраняется ноль.
Я прошел путь примерно так:
public class PrimBaseMapping<T> : ComponentMap<PrimBase<T>>
where T : struct, IComparable
{
protected virtual string ColumnSqlType { get { return "VARCHAR(50)"; } }
public PrimBaseMapping()
{
this.Map(x => x.NullableValue).CustomSqlType(ColumnSqlType).Nullable();
}
}
Что распространяется на:
public class BoolPrimBaseMapping : PrimBaseMapping<bool>
{
protected override string ColumnSqlType { get { return "BIT"; } }
}
И:
public class IntegerPrimBaseMapping : PrimBaseMapping<int>
{
protected override string ColumnSqlType { get { return "INT"; } }
}
Интересно, и, возможно, стоит отметить, у меня также есть класс с привязкой к компонентам под названием Dimension, которыйпо сути является PrimBase DimensionType (он поддерживает Nullable Dimension Type):
public class DimensionMapping : ComponentMap<Dimension>
{
private string ColumnSqlType { get { return "VARCHAR(5)"; } }
public DimensionMapping()
{
this.Map(x => x.NullableValue).CustomSqlType(ColumnSqlType).Nullable();
}
}
Я говорю, что это интересно, потому что мое сопоставление компонентов измерений на самом деле действительно сохраняет в моей базе данных.
Сначала я подумал, что, возможно, я делаю PrimBaseMapping слишком сложным, что я, возможно, мог бы сделать его более похожим на отображение компонента Dimension Component, но я хотел сначала изложить это для второго мнения.