我使用Fluent來映射父集合 - >兒童收集場景的框架演示我正在做,我是一個NHibernate的新手,所以去容易:)Fluent NHibernate試圖刪除集合與雙向參考
我有我的DTO以下映射:
public class OrderMapping : ClassMap<OrderDTO>
{
public OrderMapping()
{
Id(x => x.OrderId);
Map(x => x.OrderDate);
Map(x => x.Address);
HasMany<OrderLineDTO>(x => x.OrderLines).KeyColumn("OrderId").Not.LazyLoad();
Table("`Order`");
}
}
和
public class OrderLineMapping : ClassMap<OrderLineDTO>
{
public OrderLineMapping()
{
Id(x => x.OrderLineId);
Map(x => x.OrderId).ReadOnly();
Map(x => x.Amount);
Map(x => x.Description);
References<OrderDTO>(x => x.Order).Column("OrderId");
Table("OrderLine");
}
}
的DTO對象被設置爲接收這些值,而這一切工作正常(我Ť因爲我正在處理框架並且LazyLoading尚未完成),所以我暫時沒有使用LazyLoad。
所以,我打開我的測試應用程序 - 將數據加載到兩個網格,與家長和孩子們展示正確
如果我更改子或父對象並試圖保存,我可以看到,爲父/子保存生成的SQL是正確的,並且傳遞給SQL的值已被發現 - 唯一的問題是在更新後,NHib決定要刪除集合?它試圖這樣SQL:
UPDATE OrderLine SET OrderId = null WHERE OrderId = 2
哪個失敗,因爲該表從訂單行一個FK對OrderLine.OrderId = Order.OrderId秩序,也不能級聯。另外我不明白爲什麼收集需要刪除..
NHib拋出'無法刪除集合'的錯誤 - 這是因爲它試圖從OrderLineDTO子刪除'訂單'引用?
編輯:
其實看DTO它看起來像從我的業務反向映射對象是「訂單」,不包含在每個OrderLineDTO所以我可能已經制定了這一點!恨它,當我做到這一點:)
編輯2:
原來,即使正確地在服務器端重新創建對象,我得到了同樣的問題
什麼想法?