簡體   English   中英

NHibernate:插入后需要使用@@ identity更新對象ID

[英]NHibernate: need to update object ID with @@identity after insert

我是第一次使用NHibernate,而且很掙扎。 在第一頁上,我啟動一個表單。 我要保存並導航到第二頁。 如何使用新插入的行的ID更新我的RequestForm對象? 盡管數據已保存到數據庫中,但當我調用重定向時它仍為0。

這是我的控制器代碼:

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult New(RequestForm form)
    {
        // contract
        if (form == null)
        {
            throw new ArgumentException("Cannot be null", "form");
        }

        // validate the form
        form.Validate(ModelState);

        // if valid, save & continue
        if (ModelState.IsValid)
        {
            var request = new Request();
            form.Update(request);
            repository.Save(request);
            return RedirectToAction("Edit", "Request", new {id = form.ID});
        }

        // if not valid, return new form
        return View("New", form);
    }

這是存儲庫代碼:

    public void Save(T entity)
    {
        using (ISession session = GetSession())
        using (ITransaction transaction = session.BeginTransaction())
        {
            session.SaveOrUpdate(entity);
            transaction.Commit();
        }
    }

這是映射文件的相關區域:

<class
  name="Request"
  table="Data_Requests"
  dynamic-update="true">

<id 
  name="Id" 
  type="Int32" 
  access="property"
  column="RequestId"
  unsaved-value="0">
  <generator class="native"/>
</id>

感謝您閱讀我的問題。 我確信一旦您知道自己在做什么,答案就很容易了:)

您是否嘗試設置<generator class="identity"/> 它應該與本地人一起工作,但是誰知道...

OK-愚蠢的錯誤

return RedirectToAction("Edit", "Request", new {id = form.ID});

應該

return RedirectToAction("Edit", "Request", new {id = request.ID});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM