Nhibernate 3.2按代码映射 - 版本(并发)

时间:2012-03-03 12:48:40

标签: nhibernate nhibernate-mapping

我正在尝试将基于hbm.xml的nhibernate项目迁移到代码映射。我在使版本部分工作时遇到问题。在hbm.xml中我有:

< version name =“Version”column =“Version”type =“Int32”unsaved-value =“0”/>

我尝试过以下映射:

        Version(x => x.Version, m =>
        {
            m.Column(c =>
            {
                c.SqlType("Int32");
                c.Name("Version");
            });
            m.Generated(VersionGeneration.Always);
            m.UnsavedValue(0);
            m.Insert(true);
            m.Type(new NHibernate.Type.Int32Type());
        });

但似乎没有任何东西产生与原始hbm.xml相同的映射,它们最终都没有type =“Int32”。有没有人有任何想法我怎么能做到这一点,或者它是否支持3.2?

干杯

更新

查看我的回答

2 个答案:

答案 0 :(得分:2)

根据Toni评论,我已将我的映射更改为:

Version(x => x.Version, mapper =>
        {
            mapper.Generated(VersionGeneration.Never);
            mapper.UnsavedValue(0);
            mapper.Type(new NHibernate.Type.Int32Type());
        });

哪个证明可以用作我原来的hbm.xml

答案 1 :(得分:1)

如果属性Version已经是int32的类型,那么它不会插入到hbm文件中。我认为如果实际类型不同,类型部分只写入xml文件。示例(域实体使用int32但我们想使用int64映射它):

// in the domain entity
public int RowVersion{get;set;}

//  Mapping
this.Version(x => x.RowVersion, mapper =>
    {
        mapper.Generated(VersionGeneration.Never);
        mapper.UnsavedValue(0);
        mapper.Type(new NHibernate.Type.Int64Type());
    });

// Xml file
<version name="RowVersion" type="Int64" unsaved-value="0" />