【问题标题】:How to use ObservableCollection with Fluent nHibernate?如何将 ObservableCollection 与 Fluent nHibernate 一起使用?
【发布时间】:2011-03-07 14:34:49
【问题描述】:
ObservableCollection<ItemPedido> Items

但现在在 Fluent nHibernate 中我不知道如何使用它。 有没有一种简单的方法可以将 ObservableCollection 与 Fluent nHibernate 一起使用? 我注意到有一个 DLL NHibernate.Collection.Observable;

但我不知道如何替换我当前使用 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;

如何更改上述代码以使其与 Observable Collection 和 Fluent nHibernate 一起使用?

【问题讨论】:

  • 你能说清楚你对什么活动感兴趣吗?具体来说,当 NHibernate 从数据库中填充集合作为延迟加载的一部分时,您是否需要事件?
  • 是的,我希望在 nhibernate 填充 Collection 时自动填充 ListBox。而且当我将一个项目添加到集合中时。我正在使用延迟加载。现在我正在使用 ListBoxItems.Items.Refresh();如果我使用 ObservableCollection,我将不需要调用 Refresh 方法。它将是自动的。
  • 好的,但是当 NHibernate 在首次加载时更改集合时,您希望引发一个事件吗?
  • 我认为是的,因为我打算将它与 WPF 一起使用。因此,例如,对 Collection 所做的所有更改都必须是 ListBox 可观察的。

标签: c# wpf fluent-nhibernate


【解决方案1】:

继续使用ObservableCollection&lt;T&gt; 作为IList&lt;T&gt; 的实现——无需更改业务代码。

您所要做的就是配置 NHibernate 以在执行延迟加载时在内部用 NhibernateObservableCollection 替换 IList&lt;T&gt;

我用过

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&lt;T&gt;,请注意:没有二进制分发版,因此您必须自己从 c# 源代码编译 uNhAddIns.WPF.dll。

【讨论】:

    【解决方案2】:

    您可以使用本文中的代码 - http://www.codeproject.com/KB/WPF/WpfNhibernateToolkit.aspx,或者您可以添加自定义数据视图并将您的 Items 属性包装到另一个像这里所做的那样 - http://www.shawnduggan.com/?p=46http://www.shawnduggan.com/?p=84

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多