Я предполагаю, что это связано с созданием списка внутри конструктора, особенно если вы оставили ctor по умолчанию для NHib.И этот NHib пытается установить список, прежде чем он будет создан.Другая сложность здесь в том, что у вас двунаправленные отношения, и CategoryTranslated может пытаться попасть в список до того, как он будет создан.
Я сомневаюсь, что это единственное решение, но здесь я использую шаблонэто должно решить ошибку:
/// <summary>Gets the ....</summary>
/// <remarks>This is what is available to outside clients of the domain.</remarks>
public virtual IEnumerable<CategoryTranslated> CategoriesTranslated{ get { return _InternalCategoriesTranslated; } }
/// <summary>Workhorse property that maintains the set of translated categories by:
/// <item>being available to <see cref="Category"/> to maintain data integrity.</item>
/// <item>lazily instantiating the <see cref="List{T}"/> when it is needed.</item>
/// <item>being the property mapped to NHibernate, the private <see cref="_categoriesTranslated"/> field is set here.</item>
/// </list>
/// </summary>
protected internal virtual IList<Category> _InternalCategoriesTranslated
{
get { return _categoriesTranslated?? (_categoriesTranslated= new List<Category>()); }
set { _categoriesTranslated= value; }
}
private IList<StaffMember> _categoriesTranslated;
Теперь вам нужно настроить отображение для доступа к приватному полю, поэтому, если вы здесь используете мои настройки обсадных труб, у вас будет:
public void Override(AutoMapping<Category> mapping)
{
mapping.HasMany(x => x.CategoriesTranslated)
.Inverse()
.Access.CamelCaseField(CamelCasePrefix.Underscore)
.Cascade.All();
}
HTH,
Berryl
EDIT ============
Коллекция _Internal также дает потомку двунаправленных отношений, CategoryTranslated в этомчехол, крючок, как показано в коде ниже:
public virtual CategoryTranslated CategoryTranslated
{
get { return _categoryTranslated; }
set
{
if (_categoryTranslated!= null)
{
// disassociate existing relationship
_categoryTranslated._InternalCategoryTranslated.Remove(this);
}
_categoryTranslated= value;
if (value != null)
{
//make the association
_categoryTranslated._InternalCategoryTranslated.Add(this);
}
}
}
private CategoryTranslated _categoryTranslated;