流畅的NHibernate Nullable组件映射保存null

时间:2011-03-12 16:30:03

标签: nhibernate fluent

我有一个流畅的NHibernate ComponentMap<>映射Nullable<>类型。我的解决方案编译,我的实体保存到我的数据库,但是,我发现保存了null而不是我的实体中的值。

我走了类似以下的路线:

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的Component-mapped类,它实际上是一个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映射,但我想先把它放在那里以获得第二个意见。

0 个答案:

没有答案