2009-05-28 6 views
1

Ich benutze NHibernate zum ersten Mal und kämpfen. Auf der ersten Seite starte ich ein Formular. Ich möchte speichern und zu Seite zwei navigieren. Wie aktualisiere ich mein RequestForm-Objekt mit der ID der neu eingefügten Zeile? Es ist immer noch 0, wenn ich die Umleitung anrufe, obwohl die Daten in der DB persistent waren.NHibernate: muss Objekt ID mit @@ Identität nach dem Einfügen aktualisieren

Hier ist mein Controller-Code:

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

Hier ist das Repository Code:

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

Hier ist der relevante Bereich der Zuordnungsdatei:

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

Dank für meine Frage lesen . Ich bin mir sicher, die Antwort ist einfach, sobald Sie wissen, was Sie tun :)

Antwort

0

OK - Dumb Fehler

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

sein sollte

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

Haben Sie versucht Einstellung <generator class="identity"/>. Es sollte mit nativer arbeiten, aber wer weiß ...

+0

Hat nicht funktioniert. Weißt du, ob ich etwas tun muss, um das Objekt zu aktualisieren? Ich dachte, es würde einfach automatisch passieren ... – Leslie

Verwandte Themen