假設我有訂單系統。 每個「訂單」引用「客戶」對象。 當我填寫數據訪問層中的訂單列表時,客戶對象應該從 帶來Customer Web Service「WCF」。 所以,我沒有對顧客財產的次序來映射類映射,獲取Nhibernate實體並從Web服務完成它
Id(o => o.OrderID).GeneratedBy.Identity();
//References(o => o.Customer).Not.Nullable().Column("CustomerID");
HasMany(o => o.Details).KeyColumn("OrderID").Cascade.AllDeleteOrphan();
Map(c => c.CustomerID).Not.Nullable();
,並要求NHibernate的會議讓我的訂單列表。 並試圖循環在列表中的每一個訂單,以填補它的客戶財產, doe的任何機構有一個好主意,這?
IList<Order> lst = Session.CreateCriteria<Order>().List<Order>();
foreach (Order order in lst)
order.Customer = serviceProxy.GetCustomerByID(order.CustomerID);
對不起, Dmonlord,感謝您的回覆,第一個解決方案看起來不錯, ,但另一個解決方案,建議該模型應該有一個服務代理,這違反了企業應用程序模式恕我直言:引用意味着模型應該是持久無知的。 我對嗎? – 2010-05-31 17:21:53
好吧,我也會選擇第一個解決方案。我不喜歡像ActiveRecord模式那樣的花哨的東西,當應用程序變得更加複雜時,它可能會在你的腿上拍攝你。我留在服務/存儲庫模式和簡單(或多或少的屬性)域模型。我不在乎是否有人說這不是一個真正的領域驅動設計。 – dmonlord 2010-06-01 17:36:05