2015-01-17 3 views
2

У меня есть WPF Applicaton, и в каждом файле 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; } 
} 

Таким образом, в первый раз, когда я открываю UserControl состояние который использует DbContext, требуется загрузка 2-4s до появления интерфейса usercontrol. Как только он загрузится, я могу вернуться в предыдущее состояние пользовательского контроля и снова открыть это состояние usecontrol, после чего задержка исчезнет. Поэтому я предполагаю, что проблема заключается в том, что задержка всегда будет существовать, когда дело доходит до загрузки данных из DbContext в первый раз. Итак, есть ли решение избежать этой первой медленной загрузки? Сначала я решил, что этот класс DBContextManager статичен, или я бы создал экземпляр DBContextManager в MainWindow, а затем использовал этот экземпляр повсюду, но я не уверен, что это хорошая идея.

Я использую всю последнюю версию sqlite и EF6.

ответ

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. Также Джули Лерман имеет хороший курс на Pluralsight.com об ef 6 и как ускорить инициализацию Entity-framework здесь http://www.pluralsight.com/courses/entity-framework-6-ninja-edition-whats-new.

Надеюсь, что это поможет

+0

Спасибо, я сейчас посмотрю. – Kapparino

+0

Я поклонник PluralSight! +1 для включения ссылки Pluralsight. Спасибо!!! – GPGVM

Смежные вопросы