0

我对 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”保持为空。我怎样才能使它工作,以便localizedText项目在添加时有一个objectId?

扎克

4

1 回答 1

0

当您找到自己问题的答案时,这很棒。

为了执行正确的 SQL,尤其是对任何有关系的对象,保存对象的代码应该在以下方法调用之间。begintransaction() 和 commitTransaction()。只有在调用 commitTransaction 时,才会将所有值写入数据库,即使是没有值的字段也会自动分配零,而不是在前面的情况下为 null。

于 2011-05-01T09:59:53.483 回答