如何使用流畅的nhibernate访问基类的支持字段?

时间:2010-05-24 16:11:44

标签: c# nhibernate inheritance fluent-nhibernate backing-field

如何在映射类中将Access策略设置为指向base _photos字段?

public class Content
{
  private IList<Photo> _photos;
  public Content()
  {
     _photos = new List<Photo>();
  }
  public virtual IEnumerable<Photo> Photos
  {
    get
    {
      return _photos;
    }
  }

  public virtual void AddPhoto() {...}
}

public class Article : Content
{
  public string Body {get; set;}

}

我目前正在使用以下内容尝试找到支持字段,但由于找不到它而引发异常。

public class ArticleMap : ClassMap<Article>
{
   HasManyToMany(x => x.Photos)    
   .Access.CamelCaseField(Prefix.Underscore)  //_photos
   //...
}

我尝试将支持字段_photos直接移动到类中,并且访问工作正常。那么我如何访问基类的支持字段?

2 个答案:

答案 0 :(得分:3)

确定找到了答案。使用Fluent NHibernate 1.1版(2010年5月23日发布),您可以使用reveal成员方法:

Reveal.Member<YourEntity>("_privateField");

所以上面的映射类现在变为:

public class ArticleMap : ClassMap<Article>
{
   HasManyToMany<Photo>(Reveal.Member<Article>("_photos"))
   //...
}

发布详细信息:http://fluentnhibernate.org/blog/2010/05/23/feature-focus-fields.html

答案 1 :(得分:0)

尝试将_photos的辅助功能更改为protected:

protected IList<Photo> _photos;