Ano. Jde o to používat skutečnou databázi pouze pro integrační testy, které se nemusí spouštět tak často a celá sada integračních testů se obvykle provádí pouze na build serveru.
Důvodem je pomalá inicializace EF při testování jednotky (můžete zkusit přejít na x86). Čas také spotřebovává generování pohledu. Zobrazení lze předem vygenerovat což se obvykle provádí za účelem snížení spouštění a inicializace skutečného systému, ale v případě zrychlení testů jednotek pomocí předgenerování zobrazení příliš nepomůže, protože jen přesunete čas od testu k sestavení.
Jít kolem by znamenalo použít obyčejný starý skript SQL. Další čas potřebný pro tuto operaci může být vynaložen na generování tohoto SQL. Myslím, že SQL se neukládá do mezipaměti, protože normální spuštění aplikace to normálně nepotřebuje více než jednou, ale můžete požádat EF, aby vám dal alespoň tu nejdůležitější část toho SQL, někde ji uložil do mezipaměti a sám ji spustil pokaždé, když ji budete potřebovat . EF je schopen vám poskytnout SQL pro tabulky a omezení:
var dbSql = ((IObjectContextAdapter) context).ObjectContext.CreateDatabaseScript();
Stačí mít svůj vlastní malý SQL pro vytvoření databáze a jejich společné používání. I něco jako následující skript by měl stačit:
CREATE DATABASE YourDatabaseName
USE YourDatabaseName
Musíte také nejprve vypnout generování databáze v kódu, aby to fungovalo a abyste převzali kontrolu nad procesem:
Database.SetInitializer<YourContextType>(null);
Při provádění SQL vytváření databáze budete potřebovat samostatný připojovací řetězec směřující na Master
databáze.