Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jakiś sposób na przyspieszenie CreateIfNotExists w Entity Framework?

TAk. Chodzi o to, aby z prawdziwej bazy danych korzystać tylko do testów integracyjnych, które nie muszą być wykonywane tak często, a cały zestaw testów integracyjnych jest zwykle wykonywany tylko na serwerze budującym.

Dzieje się tak z powodu wolna inicjalizacja EF podczas testów jednostkowych (możesz spróbować przełączyć się na x86). Czas pochłania również generowanie widoków. Widoki można wstępnie wygenerować co zwykle ma na celu skrócenie uruchamiania i inicjalizacji rzeczywistego systemu, ale w przypadku przyspieszenia testów jednostkowych przy użyciu wstępnego generowania widoku nie pomoże zbytnio, ponieważ po prostu przesuniesz czas od testu do kompilacji.

Poruszanie się oznaczałoby po prostu używanie zwykłego starego skryptu SQL. Dodatkowy czas potrzebny na tę operację można poświęcić na wygenerowanie tego kodu SQL. Myślę, że SQL nie jest buforowany, ponieważ normalne wykonanie aplikacji zwykle nie wymaga go więcej niż raz, ale możesz poprosić EF, aby dał ci przynajmniej najważniejszą część tego SQL, buforuj go gdzieś i uruchamiaj go samodzielnie za każdym razem, gdy tego potrzebujesz . EF jest w stanie podać kod SQL dla tabel i ograniczeń:

var dbSql = ((IObjectContextAdapter) context).ObjectContext.CreateDatabaseScript();

Wystarczy mieć swój własny mały SQL, aby stworzyć bazę danych i używać ich razem. Nawet coś takiego jak poniższy skrypt powinno wystarczyć:

CREATE DATABASE YourDatabaseName

USE YourDatabaseName

Musisz również najpierw wyłączyć generowanie bazy danych w kodzie, aby to zadziałało i przejąć kontrolę nad procesem:

Database.SetInitializer<YourContextType>(null);

Podczas wykonywania SQL tworzenia bazy danych będziesz potrzebować oddzielnego ciągu połączenia wskazującego na Master Baza danych.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. classNotFoundException podczas ładowania sterownika JDBC

  2. Serwer SQL 2008 - funkcje dostrajania wydajności do wstawiania dużej ilości danych

  3. Nie mogę uruchomić przeglądarki SQL Server

  4. Dodaj wiersz podsumowania z sumami

  5. Entity Framework 6 GUID jako klucz podstawowy:nie można wstawić wartości NULL do kolumny „Id”, tabela „FileStore” kolumna nie zezwala na wartości null