Отображение Nhibernate 3.2 по коду - версия (параллелизм) - PullRequest
1 голос
/ 03 марта 2012

Я пытаюсь перенести проект nhibernate на основе hbm.xml в сопоставление по коду.У меня возникли проблемы с работой раздела Версия.В hbm.xml у меня есть:

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 ]

2 голосов
/ 27 марта 2012

После комментария Тони я изменил свое отображение на:

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

которые работают как мой оригинальный hbm.xml

1 голос
/ 04 марта 2012

Если свойство 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" />
...