[英]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.