У меня есть очень простой вопрос, но я не могу понять это. Если у меня есть отношения один ко многим между [Member] и [Mail]
Если я снимаю инверсию, все работает, только когда я вызываю instance.inverse, он не сохраняет.
public class Mail : Entity
{
public virtual Member Receiver
{
get; set;
}
public virtual string Subject
{
get;
set;
}
public virtual string Body
{
get; set;
}
}
public class Member : Entity
{
public Member()
{
Mail = new List<Mail>();
}
[Cascade(Enums.CascadeOptions.All)]
public virtual IList<Mail> Mail
{
get; set;
}
}
Обратное верно для одного ко многим (через соглашение об автоматическом преобразовании)
public class HasManyConvention : IHasManyConvention
{
public void Apply(FluentNHibernate.Conventions.Instances.IOneToManyCollectionInstance instance)
{
instance.Key.Column(instance.EntityType.Name + "ID");
instance.Inverse();
}}
Я пытаюсь добавить почтовый элемент участнику через:
mail.Receiver = receiver;
receiver.Mail.Add(mail);
_repository.SaveOrUpdate(mail);
FlushSessionAndEvict(mail);
Теперь, что странно, почтовый элемент сохраняется в базе данных, есть внешний ключ с именем MemberId, который ДОЛЖЕН иметь внешний ключ к таблице родительского члена, и столбец с именем ReceiverFk, который соответствует моему соглашению, но не должен не будет, если уже есть отношение внешнего ключа с MemberId. Когда я получаю пользователя, к нему не прикрепляется почтовый элемент. Если я снимаю инверсию, все работает, ключ foregin сохраняется в MemberId.
Я не хочу снимать инверсию, потому что это влечет за собой еще один вызов для обновления базы данных. Что я могу сделать?
Спасибо