2012-02-06 2 views
0

이것은 Fluent NHibernate와 Auto mapping을 시도한 첫 번째 시간입니다. 불행히도 나는 과거에 얻을 수없는 문제에 부딪 쳤습니다. 내 클래스 중 하나의 메소드를 매핑 할 수 없다는 오류가 나타납니다.Fluent NHibernate : 엔티티 '(메소드 이름)'에 ID가 매핑되지 않았습니다.

public class Person 
{ 
    public IEnumerable<string> GetStuff(){return stuff;} 
} 

예외 메시지 :

The entity '<GetStuff>d__0' doesn't have an Id mapped. 

내가 심지어는 IAutoMappingOverride (map.IgnoreProperty 사용)에있어서 무시 추가하는 시도.

실제로지도를 매핑하려고합니까? 여기서 뭐하는거야?

답변

0

인터페이스를 사용하여 각 엔터티를 수동으로 표시하여이 문제를 해결했습니다.

public class MyAutomappingConfiguration : DefaultAutomappingConfiguration 
{ 
    public override bool ShouldMap(Type type) 
    { 
     return type.GetInterfaces().Contains(typeof (IEntity)); 
    } 
} 
1

자동 매핑하려는 모든 엔티티에는 Id 속성이 있거나 Id 속성이있는 클래스에서 상속되어야합니다. 당신의 Person 클래스는 그렇게하지 않는다.

내 경험상 엔티티의 모든 공용 메소드는 가상으로 선언되어야합니다 (모든 것을로드하는 데 열심 인 경우에는 필요하지 않지만).

+0

Person 엔티티가 문제가 아니므로 Message 예외 메시지를 읽습니다. 나는 그것을 간결하게하고 싶기 때문에 전체 정의를 포함하지 않았다. 또한 GetStuff 메서드에 가상을 추가하려고 시도했지만 도움이되지 않았습니다. – Kelly

+0

나는 그 메시지를 보았고 나에게 어떤 의미가 없다. 왜 FNH가 메소드를 엔티티로 처리하는지, 아니면 d__0이 무엇인지를 알지 못합니다. 또한 샘플 코드와 일치하는 누락 된 ID에 대해 불만을 토로하므로 가치가 있다고 생각합니다. 다행히 당신이 그것을 듣고 있다는 것을 듣고 싶습니다. 그것은 저에게 새로운 접근법입니다. –