我想知道什麼樣的最佳設計是用NHibernate持久化一個新的子實體,而不會意外覆蓋數據庫中的父項。NHibernate:如何保存一個新的實體,而不覆蓋父:
我的問題是,孩子實體將是這個樣子:
class Child
{
Parent Parent;
// other fields
}
我的問題是,孩子已經從UI層與母公司的ID一起提供,這意味着Parent ref基本上是未初始化的:它將填充ID,但其他一切都爲空 - 因爲填充其字段的唯一方法是額外往返數據庫以讀取它們。
現在,如果我在NHibernate上調用Session.SaveOrUpdate(child)
,父類會發生什麼情況。我不希望NHibernate級聯保存未初始化的父節點,因爲這隻會破壞數據庫中的數據。人們會如何解決這個問題?任何最佳實踐?
好的謝謝。這意味着需要額外往返數據庫才能獲取父項,即使我並不打算對父數據執行任何操作,但我更願意避免使用這些數據。沒有什麼好方法可以避免這種情況? – PhantomDrummer 2010-11-05 11:28:05
建議使用Load()作爲Trygve以避免加載不必要的數據。 – UpTheCreek 2010-11-05 12:03:23
聽起來似乎正在發生的事情是,孩子正在通過查詢直接填充到用戶界面中,而不考慮父母。正在提出的是一種設計的一般原則,即你從未在父母之外擁有子女。你肯定不會在沒有經過父母的情況下添加新的孩子。 – Sisyphus 2010-11-05 12:29:43