2

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 をクラスに直接移動してみましたが、アクセスは機能します。では、基本クラスのバッキング フィールドにアクセスするにはどうすればよいでしょうか。

4

2 に答える 2

3

わかりました、答えを見つけました。Fluent NHibernateバージョン1.1(2010年5月23日リリース)を使用すると、メンバーの公開メソッドを利用できます。

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

于 2010-05-25T16:45:41.283 に答える
0

のアクセシビリティ_photosを保護されたものに変更してみてください:

protected IList<Photo> _photos;
于 2010-05-24T17:49:43.437 に答える