2011-04-18 125 views
0

我試圖做一個繼承映射。有兩個 替代。一種替代方案是JoinedSubClass(即 已棄用,並給我一個警告),另一個更新版本是 SubClassMap流利的NHibernate映射問題(覆蓋)

但我得到一個錯誤,我有重複的實體/對象映射。什麼 可能是問題?

隨着JoinedSubClass它運行。這裏是我的兩個對象 的代碼和MappingFileJoinedSubClass它運行,後來有 我的映射文件與「SubClassMap」不運行的代碼....

對象:

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); 
    } 
} 

映射文件:

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

很難說沒有,你得到的錯誤,但我認爲你缺少KeyColumn("personQuelle_Id")來電您SubclassMap