如何在MVC3中使用指定的主键保存表中的行nhibernate

时间:2012-05-10 10:51:00

标签: asp.net-mvc-3 nhibernate nhibernate-mapping

我有一个包含以下字段的表

  public class ActivationCode
{
  public virtual int LoginAccountId { get; set; }
   public virtual string ActivatedCode { get; set; }
   public virtual DateTime ActivationDate { get; set; }
}

其中LoginAccountid是我的主键并映射为

 <id name="LoginAccountId">
  <generator class="native" />
</id>

保存时我将LoginAccountId指定为我的用户帐户ID bt在保存时会获取自己的id并保存数据 我试图用两者保存数据 Session.Save();和Session.SaveorUpdate 在Session.SaveorUpdate中,它给出了我的错误

    Unexpected row count: 0; expected: 1.

任何人都能帮助我吗?

1 个答案:

答案 0 :(得分:1)

来自nhibernate.info

  

5.1.5.7。分配的标识符

     

如果您希望应用程序分配标识符(而不是   让NHibernate生成它们),您可以使用assigned生成器。   此特殊生成器将使用已分配的标识符值   到对象的标识符属性。使用时要非常小心   功能分配具有商业意义的键(几乎总是很糟糕   设计决定)。

     

由于其固有的性质,使用此生成器的实体不可能   通过ISession的SaveOrUpdate()方法保存。相反,你必须   如果要保存对象,则明确指定NHibernate   通过调用的Save()Update()方法进行更新   的ISession。