我在保存包含多个子节点的Parent对象时遇到问题。
模型类如下:
public class Driver
{
private IList<CitationEvent> _CitationEvents = new List<CitationEvent>(1);
}
public class CitationEvent
{
public virtual Driver Driver { get; set; }
}
Driver.hbm.xml
<bag name="_CitationEvents" access="field" cascade="all-delete-orphan" inverse="true">
<key column="DRIVER_ID" />
<one-to-many class="CitationEvent" />
</bag>
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
保存驱动程序时,它不会给我这个例外。
答案 0 :(得分:2)
这不是NHibernate特定的错误。可能的原因是您在其中一个类中有一个可空属性,您试图将其转换为非可空类型。尝试访问没有值的可空类型的Value属性时,.NET Framework会抛出此异常。