我对NHberinate相对较新,并且使用它作为EF的替代品,因为它在Mono上运行良好。
我的所有实体都使用AutoMapping进行映射。
问题是我有一对多的关系设置。其中一个Item类有一个localizedText类。我还为Cascade all设置了一个约定。
public class CascadeAll : IHasOneConvention, IHasManyConvention, IReferenceConvention
{
public void Apply(IOneToOneInstance instance)
{
instance.Cascade.All();
}
public void Apply(IOneToManyCollectionInstance instance)
{
instance.Cascade.All();
}
public void Apply(IManyToOneInstance instance)
{
instance.Cascade.All();
}
}
当我将一个localizedText添加到我的Item类时,它运行良好,并且localizedText表获取写入表中的值,但是外键值“itemId”保持为null。如何使其工作,以便localizedText项目在添加时具有objectId?
扎克
答案 0 :(得分:0)
当你找到自己问题的答案时很好。
为了使用任何具有关系的对象执行正确的SQL, 保存对象的代码应该在以下方法调用之间。 begintransaction()和commitTransaction()。只有在调用commitTransaction时,所有写入数据库的值,即使没有值的字段也会自动分配为零,而不是在前面的情况下为null。