sql >> Databáze >  >> RDS >> Sqlserver

Nějaký způsob, jak urychlit CreateIfNotExists v Entity Framework?

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.




  1. Jak nainstalovat (L|M)AMP stack na iPhone?

  2. je možné vybrat přímo EXISTS jako bit?

  3. Mezipaměť plánu provádění pro funkce PL/pgSQL v PostgreSQL

  4. MYSQL QUERY LEFT JOIN ZOBRAZIT VŠECHNA DATA Z JEDNÉ TABULKY