Wpf Fluent惯例会破坏延迟加载吗?(未添加)

Wpf Fluent惯例会破坏延迟加载吗?(未添加),wpf,nhibernate,orm,fluent,unhaddins,Wpf,Nhibernate,Orm,Fluent,Unhaddins,我在WPF应用程序中有一个简单的实体类,基本上如下所示: public class Customer : MyBaseEntityClass { private IList<Order> _Orders; public virtual IList<Order> Orders { get { return this._Orders; } set {this._Orders = new ObservableCollect

我在WPF应用程序中有一个简单的实体类,基本上如下所示:

public class Customer : MyBaseEntityClass
{
    private IList<Order> _Orders;
    public virtual IList<Order> Orders
    {
        get { return this._Orders; }
        set {this._Orders = new ObservableCollection<Order>(value);}
    }
}
公共类客户:MyBaseEntityClass
{
私人IList_订单;
公共虚拟IList命令
{
获取{返回此。_Orders;}
设置{this._Orders=newobserveCollection(value);}
}
}
我还在脱机实用程序中使用Fluent automapper创建一个NHibernate配置文件,然后在运行时加载该文件。这一切都很好,但由于我没有将原始集合传回NHibernate,所以我尝试添加一个约定,让NHibernate为我创建集合,这会对性能造成明显影响:

public class ObservableListConvention : ICollectionConvention
{
    public void Apply(ICollectionInstance instance)
    {
        Type collectionType =
            typeof(uNhAddIns.WPF.Collections.Types.ObservableListType<>)
            .MakeGenericType(instance.ChildType);
        instance.CollectionType(collectionType);
    }
}
公共类ObservableListConvention:ICollectionConvention
{
public void Apply(ICollectionInstance实例)
{
类型集合类型=
typeof(uNhAddIns.WPF.Collections.Types.ObservableListType)
.MakeGenericType(实例.ChildType);
实例.CollectionType(CollectionType);
}
}
正如您所看到的,我正在使用一个unaddins集合,据我所知,它应该为约定和INotification更改提供支持,但出于某种原因,这样做似乎打破了延迟加载。如果我加载这样的自定义记录

var result = this.Session.Get<Customer>(id);
var result=this.Session.Get(id);
…然后Orders字段确实被分配了PersistentObservableGenericList类型的实例,但其EntityId和EntityName字段为空,并且尝试扩展Orders会导致可怕的“非法访问加载集合”消息

有人能告诉我我做错了什么和/或我需要做什么才能让它正常工作吗?假设原始代理对象(通常包含延迟加载Orders成员所需的客户ID)被未添加的集合项替换,而该集合项没有跟踪正确的对象,对吗


更新:我已经创建了,它没有直接引用unaddins项目,但是集合类是手动添加的。它的工作原理应该非常简单,但基本上它从域创建一个数据库,添加一个带有子列表的记录,然后尝试使用collection类作为子列表的实现将其加载回另一个会话。由于延迟加载失败而引发断言。

我终于自己找到了答案……问题是由于我使用了ObservaleListType。在NHibernate语义中,列表是实体的有序集合,如果您想为IList使用某些东西,那么您需要一个无序集合,即包


在阅读了关于这个主题的答案后,我感到了一种惊喜。

你能提供一个示例项目,让我试着看一下吗?我从来没有使用过Unaddins,但是我想看看它。谢谢Leo,我已经用一个链接更新了这个问题,链接到一个演示这个问题的测试项目。