3

저는 Fluent NHibernate를 사용하여 기존 데이터베이스를 매핑하고 있습니다. 이런 이유로 - 오토 메이트는 나를위한 선택 사항이 아닙니다.Fluent NHibernate가 자동 매핑없이 특정 속성을 무시하도록 어떻게 말합니까?

NHibernate에 특정 속성을 매핑하지 않도록 알리는 방법은 무엇입니까? 대부분은 읽기 전용이며 다른 것들은 다른 이유 때문에 지속될 필요가 없습니다.

나는 이것을 VB.Net에 쓰고있다.

나는 전형적인 오류 메시지가 : "는 다음과 같은 유형이 프록시로 사용될 수 없습니다 ... '대중/보호 가상'또는 '가상 내부 보호'해야한다"

내가 의도적으로하지 않았 내 객체를 오버라이드 할 수 있기 때문에 (C#의 가상 함수와 동등 함) NHibernate에 접촉하지 않기를 원하기 때문에.

어떻게하면됩니까?

+0

나는 아직도 덜 해킹 틱 응답에 관심이 있지만이 게시물에서 해결 방법을 발견 : http://stackoverflow.com/questions/907576/how-to-tell-fluent-nhibernate-not-to- map-a-class-property 답변으로 표시된 질문은 클래스 매핑이 아닌 자동 매핑에만 적용됩니다. 주석을 신중하게 읽는다면, 맨 아래에 Virtual (override) 클래스를 만드는 것에 대해 언급 할 것입니다. 처음에는 이상하게 보입니다.하지만 마지막 주석은 그렇게하는 것이 해당 속성에 매핑하지 않는 이상 아무런 부작용이 없다고 언급합니다. 그것은 단순히 사용하지 않을 프록시를 생성합니다. – Origin

+2

[Here] (http://stackoverflow.com/questions/2278110/nhibernate-exception-method-add-should-be-public-protected-virtual-or-protec)는 왜 모든 것을 만들지에 대한 좋은 대답입니다. 메서드 (및 물론 속성) 가상. 이것은 NHibernate에 관한 것이지 FluentNHibernate에 관한 것은 아닙니다. –

답변

6

NHibernate가 매핑되지 않은 속성을 포함한 동적 프록시를 만들려면 모든 속성과 메서드를 재정의 할 수 있어야합니다. 이것은 NHibernate가 당신의 읽기 전용 프로퍼티들을 맵핑하고 있음을 의미하지는 않는다. 클래스의 프록시를 생성 할 수 있도록 오버라이드 할 필요가있다. This article은 요구 사항을 설명합니다.

+0

응답 해 주셔서 감사합니다. 그 후 다른 사람도이 사실을 알았지 만 여기서 업데이트하는 것을 잊어 버렸습니다. – Origin

+0

내가 오버라이드하거나 변경하고 싶지 않은 속성을 매핑 해제했기 때문에 이것은 매우 불행한 일입니다. - /하지만 오, 잘. 대답은 도움이되었습니다, 감사합니다. –

관련 문제