Domanda

Ho un'entità Paese molto semplice che voglio memorizzare nella cache. Funziona perfettamente, ma voglio che venga restituita una versione clone dell'istanza memorizzata o che sia di sola lettura per impedire agli sviluppatori di modificarne lo stato.

Come potrei raggiungere questo obiettivo? Ho pensato che il metodo Fluent Readonly () lo avrebbe applicato, ma non è il caso.

Mappatura fluida di esempio:

        Id(x => x.Id);
        Map(x => x.Name).WithLengthOf(50).Not.Nullable().Unique();
        Map(x => x.IsoCode).WithLengthOf(10).Not.Nullable().Unique();
        HasMany(x => x.States).Cascade.None().LazyLoad();          
        Cache.AsReadOnly();

I miei test unitari indicano chiaramente che le entità sono memorizzate nella cache e che la stessa entità viene restituita nei successivi recuperi, ma voglio che l'oggetto sia immutabile una volta caricato dall'archivio persistente.

Grazie!

È stato utile?

Soluzione

Se vuoi che le istanze della tua classe siano immutabili (nel senso che è impossibile modificare le istanze di oggetti), allora dovrai scrivere la tua classe secondo: non ha nulla a che fare con NHib o Fluente NHib. Ad esempio, mappare NHib su campi privati ??o setter di proprietà private ed esporre pubblicamente solo getter di proprietà.

Con NHib è possibile specificare " mutable = false " sulla tua mappatura di classe (non sei sicuro di come farlo con FNH, scusa). Ciò non rende l'oggetto immutabile in fase di esecuzione, ma informa NHib di non verificare la presenza di inserimenti, aggiornamenti ed eliminazioni rispetto a tali entità.

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