2011-03-07 60 views
3
ObservableCollection<ItemPedido> Items 

但現在在流利的nHibernate中,我不知道如何使用它。 有沒有一種簡單的方法來使用ObservableCollection和Fluent nHibernate? 我注意到有一個DLL NHibernate.Collection.Observable;如何在Fluent nHibernate中使用ObservableCollection?

但我不知道如何更換使用的IList我當前的代碼:

public virtual IList<ItemPedido> Items 
    { 
     get { return _Items; } 
     set { _Items = value; OnPropertyChanged(System.Reflection.MethodBase.GetCurrentMethod().Name.Substring(4)); /*OnPropertyChanged("Items");*/ } 
    } private IList<ItemPedido> _Items; 

如何更改上面的代碼,使其與觀察到的集合和功能NHibernate工作?

+0

你能說清楚你感興趣的事件嗎?具體而言,當NHibernate將數據庫中的集合作爲延遲加載的一部分進行填充時,是否需要事件? – 2011-03-07 14:36:53

+0

是的,我希望當nhibernate填充集合時,ListBox會自動填充。還有,當我添加一個項目的集合。我正在使用Lazy Loading。現在我正在使用ListBoxItems.Items.Refresh();如果我使用ObservableCollection,則不需要調用Refresh方法。它將是自動的。 – Tony 2011-03-07 16:55:59

+0

好吧,但是當NHibernate在首次加載時更改集合時,是否想要引發事件? – 2011-03-08 10:45:19

回答

3

繼續使用ObservableCollection<T>作爲IList<T>的實現 - 無需更改業務代碼。

您只需要配置NHibernate,在執行延遲加載時使用NhibernateObservableCollection在內部替換IList<T>

我用

uNhAddIns.WPF.Collections.Types.ObservableListType<T> 

Unofficial NHibernate Addins (unhaddins)這一點。

但是很可能NhibernateObservableCollection的任何其他實現都可以。

fluent-nibernate-with-wpf-convention-to-use-unhaddins-observablelisttypet-as-Default你找到我用來配置Fluent nHibernate的ObservableCollection的例子。

注意,如果你想使用uNhAddIns.WPF.Collections.Types.ObservableListType<T>:沒有二進制發行版,所以你必須自己編譯uNhAddIns.WPF.dll從c#源代碼。

相關問題