У меня есть проблема при сохранении Родительского объекта, который содержит несколько дочерних элементов.
Образцовые Классы следующие:
public class Driver
{
private IList<CitationEvent> _CitationEvents = new List<CitationEvent>(1);
}
public class CitationEvent
{
public virtual Driver Driver { get; set; }
}
XML, отображающийся в Driver.hbm.xml
<bag name="_CitationEvents" access="field" cascade="all-delete-orphan" inverse="true">
<key column="DRIVER_ID" />
<one-to-many class="CitationEvent" />
</bag>
XML, отображающийся в CitationEvent.hbm.xml
<many-to-one name="Driver" class="Driver" column="DRIVER_ID" cascade="none"/>
Когда я пытаюсь сохранить driver
, NHibernate выдает следующее исключение "Nullable object must have a value"
Код, который сохраняет его:
ITransaction transaction = session.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
session.Save(driver);
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
}
Еще одно наблюдение о проблеме: Когда я пытаюсь просто сохранить Драйвер с пустым списком _CitationEvents
это не дает мне это исключение.
Это не специфическая ошибка NHibernate. Вероятная причина в том, что у вас есть свойство, допускающее значение NULL, в одном из ваших классов, которое вы пытаетесь преобразовать в тип, не допускающий значения NULL. Это исключение выдается платформой .NET Framework при попытке доступа к свойству Value обнуляемого типа, не имеющего Value.