Pergunta

Eu tenho uma entidade País muito simples que eu quero cache. Isso funciona perfeitamente, mas eu quero uma versão clone da instância em cache a ser devolvido ou ser feitos somente leitura para impedir que os desenvolvedores alterar o estado do mesmo.

Como eu poderia conseguir isso? Eu pensei que o método Fluente somente leitura () iria impor isso, mas não é o caso.

Mapping Fluente Amostra:

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

Os meus testes de unidade indica claramente que as entidades são armazenados em cache e que a mesma entidade é devolvido no recebe posterior, mas quero que o objeto a ser imutável uma vez que é carregado a partir do armazenamento persistente.

Obrigado!

Foi útil?

Solução

Se você quiser instâncias de sua classe para ser imutável (no sentido de que é impossível modificar instâncias de objetos), então você precisa para escrever sua classe de acordo - Não tem nada a ver com NHib ou Fluente NHib. Como exemplo, mapear NHib em campos privados ou setters de propriedade privada e só expor getters de propriedade do público.

Com NHib é possível especificar "mutável = false" no seu mapeamento de classe (não sei como fazer isso com FNH, sorry). Isso não faz o imutável objeto em tempo de execução, mas não informar NHib não para verificar se há inserções, atualizações e exclusões contra essas entidades.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top