簡體   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