Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Някакъв начин за ускоряване на CreateIfNotExists в Entity Framework?

да Въпросът е да се използва истинската база данни само за интеграционни тестове, които не трябва да се изпълняват толкова често и целият набор от интеграционни тестове обикновено се изпълнява само на сървър за компилация.

Това се дължи на бавна инициализация на 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 база данни.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Премахнете крайните нули от десетичната запетая в SQL Server

  2. Защо xp_cmdshell не работи в SQL Server 2012?

  3. Прехвърляне на научна нотация (от varchar -> numeric) в изглед

  4. Как може да се направи сравнение между времената в цикъла while в съхранената процедура?

  5. Как да разделите низ и да вмъкнете стойности в таблица в SQL Server