문제

캐시하고 싶은 매우 간단한 국가 실체가 있습니다. 이것은 완벽하게 작동하지만 캐시 된 인스턴스의 클론 버전을 반환하거나 읽기 전용으로 만들어주기를 원합니다.

이것을 어떻게 달성 할 것인가? 나는 유창한 Readonly () 방법이 이것을 시행 할 것이라고 생각했지만 그렇지 않습니다.

유창한 매핑 샘플 :

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

내 단위 테스트는 엔티티가 캐시되고 동일한 엔티티가 후속 gets에 반환된다는 것을 분명히 나타내지 만, 객체가 영구 매장에서로드되면 불변이되기를 원합니다.

감사!

도움이 되었습니까?

해결책

수업의 인스턴스가 불변이되기를 원한다면 (객체 인스턴스를 수정하는 것이 불가능하다는 의미에서), 수업을 작성해야합니다. 예를 들어, NHIB를 개인 필드 또는 사유 재산 세터에지도시키고 공개적으로 속성 getters 만 노출시킵니다.

NHIB를 사용하면 클래스 매핑에서 "Mutable = False"를 지정할 수 있습니다 (FNH로 어떻게 해야하는지 확실하지 않음). 이로 인해 런타임에 객체를 불변으로 만들 수는 없지만 NHIB에 이러한 엔티티에 대한 인서트, 업데이트 및 삭제를 확인하지 말라고 알려줍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top