C# NHibernate:插入后需要使用@@identity更新对象ID
我是第一次使用NHibernate,而且很挣扎。在第一页上,我开始一个表单。我想保存并导航到第二页。如何使用新插入行的ID更新RequestForm对象?当我调用重定向时,它仍然是0,尽管数据被持久化到了数据库中 这是我的控制器代码:C# NHibernate:插入后需要使用@@identity更新对象ID,c#,asp.net-mvc,nhibernate,C#,Asp.net Mvc,Nhibernate,我是第一次使用NHibernate,而且很挣扎。在第一页上,我开始一个表单。我想保存并导航到第二页。如何使用新插入行的ID更新RequestForm对象?当我调用重定向时,它仍然是0,尽管数据被持久化到了数据库中 这是我的控制器代码: [AcceptVerbs(HttpVerbs.Post)] public ActionResult New(RequestForm form) { // contract if (form == null)
[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>
谢谢你阅读我的问题。我相信,一旦你知道自己在做什么,答案很简单:你试过设置吗。它应该与native一起工作,但谁知道…好的-愚蠢的错误
return RedirectToAction("Edit", "Request", new {id = form.ID});
应该是
return RedirectToAction("Edit", "Request", new {id = request.ID});
没用。你知道我是否需要做些什么来刷新对象吗?我以为它会自动发生。。。