NHibernate 在插入后不会 return 自动生成值

NHibernate doesn't return auto-generated value after insert

我有以下实体

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

我有以下 nhibernate fluent 映射

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 已在数据库中正确生成。有没有办法将此实体配置为 return 以及插入后自动生成的值?

谢谢

对于 CreatedDateTime 属性 的 EntityMap 映射,您可以使用生成的 属性 作为 in-

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

这将检索在您的 table 行中生成的 UTC 日期。

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

Id(x => x.Id).GeneratedBy.Identity();

当您保存对象时,这将使用数据库生成的标识加载您的默认初始化实体对象(假设您从数据库端生成它)。

希望对您有所帮助。