我有一个实体公司,有很多订单。我映射这些如下对方:NHibernate流利HasMany映射插入NULL外键
公司
HasMany(x => x.Orders).KeyColumn("CompanyID").Cascade.All().Inverse();
订购
References(x => x.Company).Column("CompanyID")
然而,当我为公司创造新的秩序,试图挽救它,我得到一个SQL错误:“不能将NULL值插入到'CompanyID'列'Orders'列中;列不允许为null,INSERT失败。”
(这是生成的SQL语句:INSERT INTO订单(名称,CompanyID)VALUES();选择SCOPE_IDENTITY()]?)
是一个逻辑错误,因为确实是我设置CompanyID是不可空。
然而,与此相反,我期望CompanyID填写正确的ID,但在我的生活中,我无法让它工作。我尝试删除反转(行为完全没有改变),改变了级联,将参考设置为不可空。
我甚至把表中的列设为空,以幽默NHibernate。但是,这留给我一个孤儿订单,因为它确实创建订单记录,但留下了CompanyID NULL。
这是我testcode在那里我取得了新的订单:
Company test = RepositoryBase<Company>.GetById(1);
test.Orders.Add(new Order("test"));
RepositoryBase<Company>.SaveWithTransaction(test);
更新的方式去无一不精。
无论如何,我希望有人在这里看到我在我的映射中做了什么错误。
在此先感谢。
.. w。 H。年。 ? .. – Tushar
@Tushar我不知道!不记得了。 –
O_O。这就是为什么你应该解释代码的答案。 :) – Tushar