2010-12-02 2 views
0

기본 클래스의 재정의 클래스를 호출하지 않습니다autopmapping 지금처럼 매우 간단 유창 nHibernate 수로 자동 매핑 사용하고

public class ReaderMappingOverride : IAutoMappingOverride<Domain.Reader> 
{ 
    public void Override(AutoMapping<Domain.Reader> mapping) 
    { 
     //use the reader ID as identifier of the class, instead of the ID field defined in superclass Entity 
     mapping.IgnoreProperty(r => r.Id); 
     mapping.Id(r => r.ReaderNumber); 
    } 
} 
:
Fluently.Configure() 
      .Database(MsSqlConfiguration.MsSql2008 
      .ConnectionString(c => c 
       .Server("(local)\\sql2008") 
       .Database("nHibernate_test") 
       .TrustedConnection())) 
      .Mappings(m => m.AutoMappings.Add(
       AutoMap.AssemblyOf<Domain.Airport>(cfg) 
       .UseOverridesFromAssemblyOf<ReaderMappingOverride>() 
       )) 

내 최우선 클래스

그런 뭔가있다

여기서 Reader는 추상 기본 클래스입니다. 각 하위 클래스에 대해 별도의 재정의 클래스를 사용하면 제대로 작동합니다. 추상 클래스의 모든 하위 클래스에 대해 재정의를 정의 할 수있는 방법이 있습니까?

덕분에,
조니

답변

0

확인, 그냥 내 문제는 내가 하나의 테이블에, 리더 클래스 시작한 계층 구조를 매핑하려고했던 것이 었습니다 내 자신의 질문 - 대답했다. 자동 매핑은 모든 추상 클래스를 자동으로 무시합니다. 내가 그냥 구성 섹션이 추가되었습니다했다 : 내 구성 클래스에

.Mappings(m => m.AutoMappings.Add(
       AutoMap.AssemblyOf<Domain.Airport>(cfg) 
       .IncludeBase<Domain.Reader>() 

public override bool IsDiscriminated(Type type) 
    { 
     //this line indicates that the readers heirarchy should be all in one table, instead of seperate tables for every type of reader 
     bool ret = type.IsSubclassOf(typeof(Domain.Reader)) || type == typeof(Domain.Reader) ; 
     return ret; 
    } 

은 (BTW, 유창함 nHibernate 수의 사이트에 주어진 예제는 방법 "type.In을 (사용 ... ".net 3.5에 존재하지 않습니다 ...)
잘 작동했습니다.
희망이 도움이 ...

관련 문제