Domanda

Quando si utilizza Session.SaveOrUpdate(myEntity); come fa NHibernate decidere come se inserire un nuovo record o aggiornare uno esistente?

Ho problemi mentre il risparmio di un oggetto in un progetto S # arp. Esso viene recuperato dallo storage, poi conservata in stato di sessione per un paio di richieste web, allora salvato nel database con una proprietà modificata (non la S # arp [DomainSignature]).

ho, in fase di esecuzione, rispetto l'oggetto che sta per essere persistito con una versione appena recuperato direttamente dal database utilizzando il metodo Equals() e che restituisce true. Tuttavia, l'oggetto finisce ancora per creare una nuova riga nel database.

Altrove nell'applicazione questo sta lavorando bene, ma spero in un puntatore su come NHib sta lavorando questo fuori.

È stato utile?

Soluzione

In sostanza SaveOrUpdate() è alla ricerca di un identificatore. Se l'identificatore è presente, si aggiorna il record nel database. Se l'identificatore non è presente, si creerà un nuovo record.

Tuttavia, suona come si potrebbe avere qualcosa di strano sta succedendo nella vostra sessione. Si potrebbe provare a SaveOrUpdateCopy() per vedere se questo risolve il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top