我正在尝试将基于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?
干杯
更新
查看我的回答
答案 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" />