开发者

How to access the backing field of a base class using fluent nhibernate?

How do i set the Access Strategy in the mapping class to point to the base _photos field?

public class Content
{
  private IList<Phot开发者_如何学Goo> _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;}

}

I am currently using the following to try and locate the backing field but an exception is thrown as it cannot be found.

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

i tried moving the backing field _photos directly into the class and the access works. So how can i access the backing field of the base class?


ok found the answer. Using Fluent NHibernate version 1.1 (released 23 May 2010) you can make use of the reveal member method:

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

So the above mapping class now becomes:

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

Release details: http://fluentnhibernate.org/blog/2010/05/23/feature-focus-fields.html


Try changing the accessibility of _photos to protected:

protected IList<Photo> _photos;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜