【问题标题】:Fluent NHibernate Mapping Problem (Override)Fluent NHibernate 映射问题(覆盖)
【发布时间】:2011-08-08 04:41:48
【问题描述】:

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

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

使用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();
   }
}

【问题讨论】:

    标签: asp.net fluent-nhibernate mapping duplicates


    【解决方案1】:

    如果没有您收到的错误,很难判断,但我认为您在SubclassMap 中错过了对KeyColumn("personQuelle_Id") 的调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-15
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      相关资源
      最近更新 更多