2012-10-26 64 views
1

您好我正在設計使用WPF,EF和MVVM(.NET4.0)的應用程序。惰性加載EF4.0凍結UI

我在綁定數據時遇到了凍結UI的問題。我認爲這是因爲延遲加載。

MVVM:

 ThreadPool.QueueUserWorkItem(state => 
     { 
       IsProgressBarVisible(true); 

       var service = Context.SomeModel.ToList(); 
       BgServiceCompleted(service); 
     }); 

XAML:

"{Binding OrderItemViews.SOmeModel_A.SomeModel_B.SOmeField}" 
"{Binding OrderItemViews.Country.Name}" 

有些型號:

public class SomeModel_A 
{ 
    public int Id { get; set; } 
    ....   
    public int SomeB_Id { get; set; } 
    public virtual SomeModel_B SomeModel_B { get; set; } 
} 

我發現這個問題的解決方案。

1)在ItemsSource-Binding中設置IsAsync-Property。

"{Binding OrderItemViews.SOmeModel_A.SomeModel_B.SOmeField, IsAsync=true}" 

接口不凍結,但過了一段時間後,值顯示。這會混淆一些用戶。

2)使用包含加載包含數據。 例如:

Context.SomeModel.Include(a => a.SomeModel2).Load(); 

但對我來說上下文沒有包括。爲什麼?

哪個最好的方法來解決這個問題?

您能否給我一個關於我應該怎麼做或者我可以閱讀和了解它的任何有用資源的指導? 謝謝

回答

1

Include不是標準庫的一部分,您必須添加using System.Data.Entity;。否則,Context.SomeModel返回的類型是什麼?

+0

謝謝,我包括system.data.entity和「包括擴展方法」出現。哪種類型返回COntext,這有什麼關係? ({System.Data.Entity.DynamicProxies.SomeMOdel _...的數組) –