我有WPF应用程序,并且在每个usercontrol.xaml.cs文件中我都有一个字段
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的usercontrol状态时,在用户控件界面显示之前需要加载2-4s。一旦加载,我可以回到我以前的usercontrol状态并再次打开usecontrol状态,然后延迟消失。所以我想问题是,当第一次从DbContext加载数据时,延迟将始终存在。那么有没有一个解决方案来避免这种第一次缓慢加载?首先我想的是将这个DBContextManager类设置为静态,或者我将在MainWindow中创建一个DBContextManager实例,然后在任何地方使用该实例,但我不确定这是不是一个好主意。
我正在使用所有最新版本的sqlite和EF6。
答案 0 :(得分:2)
如果您正在使用Entity-framework 6,一种方法是使用ngen工具编译ef dll,并避免在应用程序加载ef安装的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。
希望这有帮助