2012-04-18 2 views
0

저는 유창한에서 loquacious로 변환 중이며 공개되지 않은 속성으로 문제가 발생했습니다. 그것을 매핑하려고하면 nhibernate는 memberInfo에 null 값을 예외로 throw합니다. 나는 최신의 소스 코드를 가지고와 무슨 일이 일어 났는지보고를 통해 강화하고,이 호출과 같습니다Loquacious Nhibernate가 매핑을 위해 비공개 속성에 액세스 할 수 없습니다.

memberOfReflectType = typeof (TEntity).GetProperty(memberOfDeclaringType.Name, memberOfDeclaringType.GetPropertyOrFieldType()); 

문제를 일으키는 하나입니다. memberOfReflectType은 null로 설정된 다음 PropertyPath 생성자에서 액세스하려고하면 중단됩니다. 나는 공공 하나에 보호 된 내부 INT를 변경하면 잘 작동,

public class Foo 
{ 
    public virtual int SomePublicInt {get; set;} 
    protected internal virtual int _someProtectedInt {get; set;} 
} 

public class FooMap : ClassMapping<Foo> 
{ 
    public FooMap() 
    { 
    Table("Foo"); 
    ComposedId(compIDMapper => 
    { 
     compIDMapper.Property(x => x.SomePublicInt, m => m.Column("SomePublicInt")); 
     compIDMapper.Property(x => _someProtectedInt, m => m.Column("SomeProtectedInt")); 
    }); 
    } 
} 

하지만 내부 보호지도 할 수 있어야한다처럼 보인다 :

내 매핑은 다음과 같습니다. 어떤 문제없이 nhibernate로이 작업을 수행 할 수 있습니다.

이 문제를 해결하려면 추가 매핑 명령이 있습니까? 나는 잠시 동안 주위에 googled했다. 그러나 무엇이라도 생각해 내지 않았다. 비공개 필드

답변

2

대신 람다 식의 문자열로 오버로드를 시도 :

compIDMapper.Property("_someProtectedInt", m => m.Column("SomeProtectedInt")); 
+0

이 그것을 수정하지만이 필요한 이유를 알 수 있습니까? – Zipper

+0

NHibernate의 프록 싱 기능과 아마 연결되어 있을지도 모른다. 람다 형식의 오버로드는 공개 멤버 전용입니다. – NOtherDev

관련 문제