2015-01-17 188 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