我有NHibernate的问题,有时它没有更新ID属性
用户地图类
public class SfGuardUserMap : ClassMap<User> {
public SfGuardUserMap() {
Table("sf_guard_user");
LazyLoad();
Id(x => x.Id).GeneratedBy.Identity().Column("id");
Map(x => x.FirstName).Column("first_name");
Map(x => x.LastName).Column("last_name");
Map(x => x.EmailAddress).Column("email_address").Not.Nullable();
Map(x => x.Sex).Column("sex").Not.Nullable();
Map(x => x.Lang).Column("lang");
Map(x => x.City).Column("city");
可执行代码
var user = new User
{
FirstName = usr.FirstName,
EmailAddress = usr.Email,
LastName = usr.LastName,
Sex = usr.Sex,
Birthdate = usr.Birthday,
IsActive = User.IS_ACTIVE_ACTIVE
};
var t = (int)session.Save(user);
session.Flush();
我有问题和user.Id总是0.但是当我重新启动iis时,我的问题就消失了。
我和其他班级有点同样的问题。当我打电话给Save
时,这是否有任何属性插入数据库?
答案 0 :(得分:4)
我不是100%确定你的描述有什么问题,但我相信我可以根据你发布的代码给出一些指示:
您正在使用身份识别生成器;这意味着您允许数据库在插入实体时生成实体ID。这种方法是not recommended。我建议使用HiLo作为你的id生成器。但是,如果坚持使用标识,则应确保相应地配置了数据库。
建议always use transactions而不是明确调用Flush
。
如果这些建议对您没有帮助,我建议您详细说明您的问题 - 您看到了什么(数据库中保存的对象是?返回的ID始终为0?)