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();
当您保存对象时,这将使用数据库生成的标识加载您的默认初始化实体对象(假设您从数据库端生成它)。
希望对您有所帮助。
我有以下实体
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();
当您保存对象时,这将使用数据库生成的标识加载您的默认初始化实体对象(假设您从数据库端生成它)。
希望对您有所帮助。