2011-04-18 4 views
0

상속 매핑을 시도했습니다. 대안이 두 개 있습니다. 하나의 대안은 JoinedSubClass (즉, 이 사용 중지되었으며 나에게 경고를 함)이고 다른 하나는 SubClassMap입니다.Fluent NHibernate Mapping 문제 (오버라이드)

하지만 중복 엔티티/개체 매핑이있는 오류가 발생합니다. 무엇이 일까요?

JoinedSubClass으로 실행됩니다.

public class Person { 

    public virtual int Id { get; private set; } 
    public virtual string Vorname { get; set; } 
    public virtual string Nachname { get; set; } 
    public virtual string Email { get; set; } 
    public virtual Adresse Adresse { get; set; } 

    public Person() { 
    } 
} 

public class PersonQuelle : Person, IQuelle { 

    public virtual string Beschreibung { get; set; } 
    public virtual Institution Institution { get; set; } 
    public virtual IList<MediaDatei> MediaDateien { get; set; } 

    public PersonQuelle() { 
     MediaDateien = new List<MediaDatei>(); 
    } 

    public virtual void HinzufuegenMediaDatei(MediaDatei mediaDatei) { 
     mediaDatei.PersonQuelle = this; 
     MediaDateien.Add(mediaDatei); 
    } 

public virtual void LoeschenMediaDatei(MediaDatei mediaDatei) 
{ 
     mediaDatei.PersonQuelle = null; 
     MediaDateien.Remove(mediaDatei); 
    } 
} 
: 여기 내 두 객체의 의 코드 및 실행 JoinedSubClassMappingFile 있으며, 나중에 는 ....

객체 실행되지 않습니다 "SubClassMap"내 매핑 파일의 코드가있다

매핑 파일 :

public class PersonMap : ClassMap<Person> { 

    public PersonMap() { 
     Id(x => x.Id); 
     Map(x => x.Vorname); 
     Map(x => x.Nachname); 
     Map(x => x.Email); 
     References(x => x.Adresse); 

     JoinedSubClass<PersonQuelle>("personQuelle_Id", m => { 
      m.Map(c => c.Beschreibung); 
      m.References(c => c.Institution); 
      m.HasMany(c => c.MediaDateien).Inverse().Cascade.All(); 
     }); 

     JoinedSubClass<MMAdminBenutzer>("mmAdminBenutzer_Id", m => 
     { 
      m.Map(c => c.Kuerzel); 
      m.Map(c => c.Passwort); 
      m.Map(c => c.Benutzerrolle); 
      m.HasMany(c => c.MediaDateien).Inverse().Cascade.All(); 
      m.HasMany(c => c.Kategorien).Inverse().Cascade.All(); 
     }); 

    } 
} 

하지만이 매핑 파일을하지만 같은 객체와 그렇게 할 때 실행되지 않는 이유 ?? SubClassMap

매핑 파일 :

public class PersonMap : ClassMap<Person> { 

    public PersonMap() { 
     Id(x => x.Id); 
     Map(x => x.Vorname); 
     Map(x => x.Nachname); 
     Map(x => x.Email); 
     References(x => x.Adresse); 
    } 
} 

public class PersonQuelleMap : SubclassMap<PersonQuelle> 
{ 
    PersonQuelleMap() 
    { 
     Map(c => c.Beschreibung); 
     References(c => c.Institution); 
     HasMany(c => c.MediaDateien).Inverse().Cascade.All(); 
    } 
} 

답변

-1

그것은 당신이 얻을 오류없이 얘기하기 어렵다,하지만 난 당신이 당신의 SubclassMapKeyColumn("personQuelle_Id")에 대한 호출을 누락 생각합니다.