Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework POCO代理截获的CollectionChanged事件_Entity Framework_Proxy_Navigation_Poco_Observablecollection - Fatal编程技术网

Entity framework POCO代理截获的CollectionChanged事件

Entity framework POCO代理截获的CollectionChanged事件,entity-framework,proxy,navigation,poco,observablecollection,Entity Framework,Proxy,Navigation,Poco,Observablecollection,我有一个WPF列表框,其ItemsSource绑定到Entity Framework 4 POCO代理上的ObservableCollection导航属性。我希望用户能够在列表中添加和删除项目,然后单击[保存]按钮提交这些更改 它主要起作用,但在调用ObjectContext.CommitChanges()之前,列表框不会显示添加的项。POCO代理似乎正在拦截事件以进行Action.Add操作,然后在提交时重新启动它,或者可能是Action.Reset事件 有人知道情况是否如此吗。是否有任何可能

我有一个WPF列表框,其ItemsSource绑定到Entity Framework 4 POCO代理上的ObservableCollection导航属性。我希望用户能够在列表中添加和删除项目,然后单击[保存]按钮提交这些更改

它主要起作用,但在调用ObjectContext.CommitChanges()之前,列表框不会显示添加的项。POCO代理似乎正在拦截事件以进行Action.Add操作,然后在提交时重新启动它,或者可能是Action.Reset事件


有人知道情况是否如此吗。是否有任何可能的解决办法来获得所需的行为?

很可能是其他原因;如果基本属性是一个实现INotifyCollectionChanged的集合,则任何东西都无法阻止任何人订阅该事件(这与路由事件或其他事件不同)。根据我的经验,至少在运行时生成的代理属性方面,我从未遇到过问题。看看你的集合是如何初始化的,我会说,仔细检查你的绑定。

如果这是一个POCO类,POCO的意思是“普通的旧CLR对象”,所以它应该只做你编程它要做的事情。POCO背后的想法是您使用自己的类,而不是一些“生成的”代理。不是吗?我相信“POCO代理”是描述实体框架4的POCO实体类的DynamicProxy子类的常用术语,这就是我的情况。我很确定这不是绑定或刷新问题。我将更深入地研究它;也许可以编写一些代码来抛出动态代理的dll,这样我就可以通过reflector运行它。只是为了确保-在添加项时,您确实会将它们添加到实际的集合属性中,对吗?而不是通过其他机制把他们联系起来?我认识的某个人不久前做了类似的事情,他的收藏属性没有更新,因为没有进行任何修复,但这主要是因为(糟糕的)定制t4模板。是的,我正在进行直接添加。我用反光镜看了看。在给委托一次初始化的机会后,重写属性始终返回基本属性。我看不到委托的实现,它可能会做一些鬼鬼祟祟的事情,但你是对的,更可能是其他的事情。好吧,我觉得很傻!item DataTemplate中的绑定被绑定到未初始化的导航属性的属性。正在添加ListBoxItems,但它们没有任何可显示的内容。我真的需要先开始寻找最简单的答案。