2010-05-20 2 views
17

나는 아주 정교한 테이블을 읽는 몇 가지 클래스가 있는데, 그 이유는 그것들을 NHibernate가 "ReadOnly"로 사용하기를 원하기 때문입니다. 각 필드 맵에서 .ReadOnly()를 설정하는 것은 정말 엉성한 일이며, 나는 그것을 신뢰할 수 있는지 확신하지 못합니다. 전통적인 XML 매핑으로 쉽게 할 수 있기 때문에 클래스를 완전히 읽기 전용으로 설정하려면 어떻게해야합니까?Fluent NHibernate : 전체 클래스를 ReadOnly로 매핑하는 방법은 무엇입니까?

편집 : 답변이 작동합니다. ReadOnly() 객체를 저장하려고 시도하면 예외가 발생하기를 기대했지만 자동으로 그렇게합니다.

감사합니다. 당신이 기대처럼

class EntityMap : ClassMap<Entity> 
{ 
    public EntityMap() 
    { 
     ReadOnly(); 

     // Mappings 
    } 
} 
+0

해결 방법은 없습니까? – kaptan

+0

@kaptan : 답변에 대한 의견을 수정합니다. 그것은 효과가있다. 방금 예외를 throw 할 것으로 예상했지만 변경 사항을 자동으로 무시합니다. – rebelliard

답변

32

, 그것은 간단합니다. 이 속성을 사용하면 검색하는 개체가 읽기 전용이므로 업데이트 할 수 없습니다. 그러나 새로운 레코드의 생성이나 데이터베이스의 기존 레코드 삭제를 방지하지는 않습니다!

11

읽기 전용() 속성이 실제로 작동하지 않습니다로 유창함 자 NHibernate와

+1

흠, 그것을 알아 채지 못했습니다. 그것은 미친 짓입니다! readonly와 protected 생성자가 섞여있을 것입니다. – rebelliard

+1

"불변"이 더 좋은 이름이라고 생각합니다. –

+0

'ReadOnly'는 Fluent 네이밍입니다. 원래의 NHibernate 네이밍보다 더 나은 것으로 생각됩니다. ['mutable = "false"'] (http://nhibernate.info/doc/nhibernate-reference/mapping.html# 매핑 선언 클래스). 어쩌면 그들의 문맥에서,'ReadOnly' 속성을'insert = "false"update = "false"'에 대한 속기로 정의 했겠지만 제 견해로 이것은 클래스와 콜렉션의 변경 가능성에 대한 불행한 이름입니다. –

관련 문제