да Въпросът е да се използва истинската база данни само за интеграционни тестове, които не трябва да се изпълняват толкова често и целият набор от интеграционни тестове обикновено се изпълнява само на сървър за компилация.
Това се дължи на бавна инициализация на EF при модулно тестване (можете да опитате да преминете към x86). Времето се консумира и от генерирането на изгледи. Изгледите могат да бъдат предварително генерирани което обикновено се прави, за да се намали стартирането и инициализирането на реалната система, но в случай на ускоряване на модулни тестове, използвайки предварително генериране на изглед, няма да помогне твърде много, защото просто ще преместите времето от тест към компилация.
Обикалянето би означавало просто да използвате обикновен стар SQL скрипт. Допълнителното време, необходимо за тази операция, може да бъде изразходвано за генериране на този SQL. Мисля, че SQL не се кешира, защото нормалното изпълнение на приложение обикновено не се нуждае от него повече от веднъж, но можете да поискате от EF да ви даде поне най-важната част от този SQL, да го кешира някъде и да го изпълнявате сами всеки път, когато имате нужда . EF може да ви предостави SQL за таблици и ограничения:
var dbSql = ((IObjectContextAdapter) context).ObjectContext.CreateDatabaseScript();
Просто трябва да имате свой собствен малък SQL, за да създадете база данни и да ги използвате заедно. Дори нещо като следния скрипт трябва да е достатъчно:
CREATE DATABASE YourDatabaseName
USE YourDatabaseName
Трябва също първо да изключите генерирането на база данни в код, за да работи това и да поемете контрола върху процеса:
Database.SetInitializer<YourContextType>(null);
Когато изпълнявате SQL за създаване на база данни, ще ви трябва отделен низ за свързване, сочещ към Master
база данни.