Как получить доступ к полевому поле базового класса, используя свободные NHIBERNATE?
-
04-10-2019 - |
Вопрос
Как установить стратегию доступа в класс сопоставления, чтобы указать на поле 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 непосредственно в класс и доступом работает. Так как я могу получить доступ к полевому поле базового класса?
Решение
Хорошо, нашел ответ. Использование свободного Nhibernate версии 1.1 (выпущено 23 мая 2010 г.) Вы можете использовать метод раскрытия члена:
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.
Другие советы
Попробуйте изменить доступность _photos
защищено:
protected IList<Photo> _photos;