Tengo un Store
que contiene una lista de Products
:¿Cómo guardo un objeto transitorio que ya existe en una sesión de 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);
Ahora, quiero editar una de las Products
, pero con una entidad transitoria. Esta será, por ejemplo, los datos de un navegador 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);
Sin embargo, tratando de hacerlo de esta manera me da un error:
a different object with the same identifier value was already associated with the session
La razón es porque la colección store.Products
ya contiene una entidad con el mismo Id. ¿Cómo puedo solucionar este problema?
¿Ha intentado session.Evict (producto) antes de guardar el segundo tiempo? – mxmissile