[英]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.