Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NHibernate:插入后需要使用@@identity更新对象ID_C#_Asp.net Mvc_Nhibernate - Fatal编程技术网

C# NHibernate:插入后需要使用@@identity更新对象ID

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)

我是第一次使用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>
谢谢你阅读我的问题。我相信,一旦你知道自己在做什么,答案很简单:

你试过设置吗。它应该与native一起工作,但谁知道…

好的-愚蠢的错误

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

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

没用。你知道我是否需要做些什么来刷新对象吗?我以为它会自动发生。。。