流畅的nhibernate自动化一对多使外键为null

时间:2011-04-30 20:59:34

标签: mysql fluent-nhibernate foreign-keys nhibernate-cascade

我对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?

扎克

1 个答案:

答案 0 :(得分:0)

当你找到自己问题的答案时很好。

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