2009-05-28 4 views
1

NHibernateをはじめて使用していて、苦労しています。 Webページ1では、私はフォームを開始します。私は2ページ目を保存してナビゲートしたいと思っています。 RequestFormオブジェクトを新しく挿入された行のIDで更新するにはどうすればよいですか?データはDBに保存されていましたが、リダイレクトを呼び出すとまだ0です。ここでNHibernate:挿入後にオブジェクトIDを@@ identityで更新する必要があります

は私のコントローラのコードは次のとおりです。ここで

[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); 
    } 

は、リポジトリのコードです:私の質問を読み取るための

<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> 

ありがとう:

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

ここでマッピングファイルの関連エリアです。私はあなたがしていることを知ったら、答えが簡単だと確信しています:)

答えて

0

OK - ダム間違い

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

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

<generator class="identity"/>を試しましたか?それは、ネイティブが、誰を知っているで動作するはずです...

+0

動作しませんでしたであるべき。私はオブジェクトをリフレッシュするために何かをしなければならないかどうか知っていますか?私はそれがちょうど自動的に起こると思った... – Leslie

関連する問題