J'ai un Store
qui contient une liste de Products
:Comment enregistrer un objet transitoire existant dans une session NHibernate?
var store = new Store();
store.Products.Add(new Product{ Id = 1, Name = "Apples" };
store.Products.Add(new Product{ Id = 2, Name = "Oranges" };
Database.Save(store);
Maintenant, je veux modifier un des Products
, mais avec une entité transitoire. Ce sera, par exemple, les données à partir d'un navigateur Web:
// this is what I get from the web browser, this product should
// edit the one that's already in the database that has the same Id
var product = new Product{ Id = 2, Name = "Mandarin Oranges" };
store.Products.Add(product);
Database.Save(store);
Cependant, en essayant de le faire de cette façon me donne une erreur:
a different object with the same identifier value was already associated with the session
La raison est que la collection store.Products
contient déjà un entité avec le même Id. Comment contourner ce problème?
Avez-vous essayé session.Evict (produit) avant d'enregistrer la deuxième fois? – mxmissile