2011-04-18 178 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