Buongiorno a tutti,
ho un problema che mi assilla da anni e non sono mai riuscito a risolvere con NH.
Provo a descrivere il problema e situazione che mi si presenta:
La soluzione .net si divide in:
- Model dove ci sono le mie entità mappate tramite loquacious
- NHSqlServer dove mi scrivo la logica con delle classi wrapper che mi gestiscono la session factory, transazioni, etc.
- Core dove ci sono i miei servizi wcf con sessionfactory configurata con contesto NHibernate.Context.WcfOperationSessionContext.
Il problema è il seguente:
Ho un'entity con ID complex composto da ID (string) + Data (datetime) ora nella mia procedura lato wcf la prima cosa che faccio è fare una get in sessione per poter leggere l'entità poi la lavoro e in un caso specifico devo cambiargli la Data chiave primaria e fargli un insert sul db con ID quello letto in precedenza con Data diversa.
Provo con un evict, provo a non fare flush, provo a fare un clone, tutte le strade mi portano a fargli interpretare ad NH che l'inserimento con un session.Save (esplicito) è un update, cioè sembra che NH non gli interessi che è esplicitamente cambiata una PK e invece di fare un insert mi fà un update.
Dove sbaglio?
Grazie,
Salvatore