2015-01-17 44 views
2

我有WPF的一個應用,並在每usercontrol.xaml.cs文件我有一個字段的DbContext加載速度慢

private readonly DBContextManager dbManager = new DBContextManager(); 

類DBContextManager:

public class DBContextManager : DbContext { 
    public DBContextManager() : base("App_DbContext") { 
     Database.SetInitializer<DBContextManager>(null); 
    } 
    public DbSet<Person> Persons { get; set; } 
} 

所以,第一次當我打開用戶控件狀態它使用DbContext,在用戶控件界面顯示之前加載需要2-4s。一旦加載,我可以回到之前的用戶控制狀態,並再次打開usecontrol狀態,然後延遲消失。所以我猜想問題是,第一次從DbContext加載數據時,延遲總是存在。那麼有沒有一種解決方案可以避免首次慢加載?首先我想,是讓這個DBContextManager類是靜態的,或者我將在MainWindow中創建一個DBContextManager實例,然後在任何地方使用該實例,但我不確定這是否是個好主意。

我正在使用所有最新版本的sqlite和EF6。

回答

2

如果您使用Entity-framework 6,一種方法是使用ngen工具編譯ef dll,並避免在您的應用程序加載ef installed fron nuget包時這樣做的延遲。你可以在這裏看看ngen doc。 http://msdn.microsoft.com/en-us/library/6t9t5wcf%28v=vs.110%29.aspx。另外Julie Lerman在Pluralsight.com上有關於ef 6的良好課程,以及如何加速實體框架的初始化,在這裏http://www.pluralsight.com/courses/entity-framework-6-ninja-edition-whats-new

希望這會有幫助

+0

謝謝,我現在就來看看。 – Kapparino

+0

我是PluralSight粉絲!包含Pluralsight鏈接的+1。謝謝!!! – GPGVM