Wie Speichere ich ein transientes Objekt, das bereits existiert, in einer NHibernate-session?

Ich habe eine Store enthält eine Liste von Products:

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

Nun, ich Bearbeiten möchten Sie eine der Products, aber mit einer vorübergehenden Person. Diese werden zum Beispiel Daten von einem web-browser:

//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);

Allerdings versucht, es zu tun auf diese Weise gibt mir eine Fehlermeldung:

ein anderes Objekt mit der gleichen id-Wert war bereits im Zusammenhang mit der Sitzung

Der Grund ist, weil die store.Products Sammlung enthält bereits ein Element mit derselben Id. Wie kann ich dieses problem umgehen?

  • Haben Sie versucht, die Sitzung.Entfernen(Produkt) vor dem speichern das zweite mal?
InformationsquelleAutor Daniel T. | 2010-04-24
Schreibe einen Kommentar