J'utilise NHibernate pour la première fois et j'ai du mal à le faire. Sur la première page, je commence un formulaire. Je veux enregistrer et naviguer vers la page deux. Comment puis-je mettre à jour mon objet RequestForm avec l'ID de la ligne nouvellement insérée? Il est toujours 0 lorsque j'appelle la redirection, bien que les données aient été conservées dans la base de données.NHibernate: besoin de mettre à jour l'ID d'objet avec @@ identity après l'insertion
Voici mon code du contrôleur:
[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);
}
Voici le code du référentiel:
public void Save(T entity)
{
using (ISession session = GetSession())
using (ITransaction transaction = session.BeginTransaction())
{
session.SaveOrUpdate(entity);
transaction.Commit();
}
}
Voici la zone concernée du fichier de mappage:
<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>
Merci d'avoir lu ma question . Je suis sûr que la réponse est facile une fois que vous savez ce que vous faites :)
ne fonctionne pas. Savez-vous si je dois faire quelque chose pour rafraîchir l'objet? Je pensais que ça arriverait automagiquement ... – Leslie