繁体   English   中英

NHibernate流利的HasMany映射插入NULL外键

[英]NHibernate fluent HasMany mapping inserts NULL Foreign key

我有一家实体公司,有很多订单。 我将它们相互映射如下:

公司

HasMany(x => x.Orders).KeyColumn("CompanyID").Cascade.All().Inverse();

订购

References(x => x.Company).Column("CompanyID")

但是,当我为公司创建新订单并尝试保存它时,出现SQL错误:“无法将NULL值插入表'Orders'的'CompanyID'列中;该列不允许为空。插入失败。

(这是生成的SQL语句:INSERT INTO Order(名称,CompanyID)VALUES(?,?);选择SCOPE_IDENTITY()])

这是一个逻辑错误,因为实际上我将CompanyID设置为不可为空。

但是,通过逆运算,我希望CompanyID被正确的ID填充,但是由于我的一生,我无法使其正常工作。 我尝试删除了Inverse(行为完全没有改变),更改了层叠,将引用设置为不可为空。

我什至使表中的列可为空,以使NHibernate幽默。 但这给我留下了一个孤立的Order,因为它确实创建了Order记录,但是CompanyID为NULL。

这是我下新订单的测试代码:

Company test = RepositoryBase<Company>.GetById(1);
test.Orders.Add(new Order("test"));
RepositoryBase<Company>.SaveWithTransaction(test);

顺便说一下更新一切顺利。

无论如何,我希望这里的人看到我在映射中做错了什么。

提前致谢。

你忘了订公司

test.Orders.Add(new Order("test") { Company = test });

逆仅告诉NH订单使用Order对象上对Company的引用来插入ID。

首先添加!

test.Orders.Add(new Order("test"){Company = test});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM