我有一個實體公司,有很多訂單。我映射這些如下對方: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