使用ICollectionView和Entity Framework时Memoryleak

时间:2016-07-28 08:12:42

标签: c# wpf entity-framework memory-leaks

所以在我的应用程序中,我使用了ICollectionView of Products,它与DataBinding绑定到DataGrid。产品来自MS-SQL表,这个表很安静(约30.000个条目)。在某些时候,我需要重新加载表,因为它的内容可能已经改变。

每当我调用ReloadProducts()~30,000时,都会创建新对象。以前的对象不会被释放并保留在内存中以用于整个应用程序的实时。

知道如何强制处理旧物品吗?

视图模型:

private ICollectionView _productCollectionView;

public ICollectionView ProductCollectionView 
{
    set { _productCollectionView = value; }
    get
    {
        if (_productCollectionView == null)
        {
            ReloadProducts();
        }
        return _productCollectionView ;
    }
}

public void ReloadProducts()
{
  List<Products> productList = Entities.Products.ToList();
  ProductCollectionView = CollectionViewSource.GetDefaultView(productList);
  NotifyPropertyChanged("ProductCollectionView");
}

查看:

<DataGrid ItemsSource="{Binding ProductCollectionView}" AutoGenerateColumns="False"/>

1 个答案:

答案 0 :(得分:1)

尝试使用集合既不是它的视图。绑定将连接到集合的视图。

只需使用以下内容:

core.autocrlf