插入后,NHibernate不会返回自动生成的值

时间:2016-05-13 19:02:40

标签: c# nhibernate fluent-nhibernate fluent-nhibernate-mapping

我有以下实体

public class Entity{
   public virtual int Id { get; set; }
   public virtual DateTime CreatedDateTime { get; protected set; }
}

我有以下nhibernate流利映射

public class EntityMap : ClassMap<Entity>
{
    public Entity()
    {
        Id(x => x.Id);
        Map(x => x.CreatedDateTime)
            .Not.Nullable()
            .Default("GETUTCDATE()")
            .ReadOnly();
    }
}

当我将此实体(带有_session.Persist(entity))保存到数据库中时,它会更新生成的id,但它不会更新CreatedDateTime值,尽管CreatedDateTime会在数据库中正确生成。是否有任何方法可以配置此实体以在插入后返回自动生成的值?

感谢

1 个答案:

答案 0 :(得分:1)

对于CreatedDateTime属性的EntityMap映射,可以使用Generated属性 -

<activity
    android:name="tutorials"
    android:label="@string/app_name">
</activity>

这将检索在表格行中生成的UTC日期。

您的示例代码看起来像您的Entity表的某种id生成器。目前尚不清楚您在哪里生成您的Id字段(在客户端或数据库中)。如果要在数据库中生成Id,还可以修改EntityMap以从数据库中获取Id -

Map(x => x.CreatedDateTime).Generated.Always();

这将在您保存对象时使用数据库生成的Identity加载默认初始化的Entity对象(假设您从数据库端生成它)。

希望有所帮助。