流畅的NHibernate映射问题(覆盖)

时间:2011-04-18 20:42:13

标签: asp.net fluent-nhibernate mapping duplicates

我试图进行继承映射。那里有两个 替代。另一种选择是使用JoinedSubClass(即 弃用并给我一个警告)而另一个和更新的是 SubClassMap

但是我得到一个错误,我有重复的实体/对象映射。什么 可能是问题?

运行JoinedSubClass。这是我的两个对象的代码 以及运行MappingFile的{​​{1}},以后运行 带有“SubClassMap”的映射文件的代码,它不运行....

物件:

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

但是,当我使用相同的对象执行此操作时,为什么它不会运行 用这个映射文件??

使用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

1 个答案:

答案 0 :(得分:-1)

如果没有错误,很难说出来,但我认为您错过了KeyColumn("personQuelle_Id")SubclassMap的来电。