2012-07-01 70 views
0

我有問題與NHibernate它有些時候它不更新ID屬性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時,這裏是否有任何屬性插入數據庫?

回答

4

我不是100%肯定的是給你的描述的問題,但我相信,我可以給根據您發佈的代碼一些指針:你使用的身份ID

  1. 發電機;這意味着您允許數據​​庫在插入實體時生成實體的ID。這種方法是not recommended。我會建議使用HiLo作爲你的id生成器。但是,如果你堅持使用身份標識,你應該確保你的數據庫是相應配置的。

  2. 建議使用always use transactions而不是明確調用Flush

如果這些建議不幫你,我建議你詳細瞭解您發出─你看到的一些(有對象保存在數據庫中?是id總是返回0?)

+0

可能你回答了我的問題,所以我會盡力回覆,如果它幫助我。 –