2010-09-14 48 views
2

我有一些問題綁定到從NHibernate使用延遲加載檢索的對象。我已經閱讀了一些關於這個問題的文章,並且對我需要做些什麼來解決問題感到困惑。NHibernate和INotifyPropertyChanged

據我所知,這個問題與NHibernate的處理對於尚未加載的東西代理的方式做。有人使用延遲加載和INotifyPropertyChanged實現NHibernate嗎?

眼下INotifyPropertyChanged的作品,如果我禁用延遲加載,但否則如果他們必然要被延遲加載的東西沒有UI元素得到更新。我已經有點頭腦滿意了,而且代理實現對我來說更加陌生,所以我不完全是我在這裏需要的東西。 :)我希望有一些合理簡單的解決方案。

+0

http://ayende.com/Blog/archive/2009/08/07/nhibernate-amp-inotifypropertychanged.aspx – 2010-09-14 02:25:09

+0

我嘗試這樣做,但我不確定它適用於NHibernate查詢生成的代理。至少它不適合我。 – Justin 2010-09-14 08:08:49

+0

(具體地說)它是如何工作的? – 2010-09-14 20:54:31

回答

0

如果你確定你已經使用NH Interceptor代理你的域名,那麼一切都應該正常工作。除非你在會話管理上犯了錯誤,因爲截取不在會話範圍之外工作。你是否微調管理你的會話每個方法調用你的倉庫?

實際上,非網頁基本應用程序的最佳實踐是管理每個表單的會話,也許您已閱讀this,該文章解釋瞭如何管理每個表單的會話,但由於會話分發給演示者,因此解決方案有點髒。

我見過的最乾淨的會話管理是uNhAddins與城堡適配器,你只關心configuration其餘的你編程自己的存儲庫和服務。以下是技術參考:part 1,part 2,part 3, part 4

我最喜歡的例子是this one,但在WPF的情況下,你應該看看this one

希望有所幫助。

+0

一些鏈接被破壞,因爲他們現在使用了mercurial – ktutnik 2010-10-05 07:15:54

0

的問題是,綁定期待的屬性更改事件是代理對象的發件人,但它實際上是代理的目標對象。這會導致綁定忽略該事件。

我有同樣的問題,我通過實現攔截訂閱PropertyChanged事件,並將其訂閱自己的事件的新的NHibernate代理固定它。然後當目標引發事件時,它將它傳遞給代理訂閱者,但用發送者代理髮送者。

我寫了一篇博客文章在這裏:http://calebvear.blogspot.com/2011/04/wpf-bindings-not-updating-when.html