Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Adakah cara untuk mempercepat CreateIfNotExists di Entity Framework?

Ya. Intinya adalah menggunakan database sebenarnya hanya untuk pengujian integrasi yang tidak harus dijalankan terlalu sering dan seluruh rangkaian pengujian integrasi biasanya dijalankan hanya pada server build.

Ini karena inisialisasi EF yang lambat saat pengujian unit (Anda dapat mencoba untuk beralih ke x86). Waktu juga dikonsumsi oleh generasi tampilan. Tampilan dapat dibuat sebelumnya yang biasanya dilakukan untuk mengurangi startup dan inisialisasi sistem nyata tetapi dalam hal mempercepat pengujian unit menggunakan tampilan pra-generasi tidak akan terlalu membantu karena Anda hanya akan memindahkan waktu dari pengujian ke pembuatan.

Berkeliling hanya berarti menggunakan skrip SQL lama biasa. Waktu tambahan yang diperlukan untuk operasi ini dapat digunakan untuk menghasilkan SQL tersebut. Saya pikir SQL tidak di-cache karena eksekusi aplikasi normal biasanya tidak membutuhkannya lebih dari sekali tetapi Anda dapat meminta EF untuk memberi Anda setidaknya bagian terpenting dari SQL itu, cache di suatu tempat dan jalankan sendiri setiap kali Anda membutuhkannya . EF dapat memberi Anda SQL untuk tabel dan batasan:

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

Anda hanya perlu memiliki SQL kecil Anda sendiri untuk membuat database dan menggunakannya bersama-sama. Bahkan sesuatu seperti skrip berikut sudah cukup:

CREATE DATABASE YourDatabaseName

USE YourDatabaseName

Anda juga harus mematikan pembuatan basis data dalam kode terlebih dahulu agar ini berfungsi dan untuk mengontrol proses:

Database.SetInitializer<YourContextType>(null);

Saat menjalankan SQL pembuatan basis data, Anda akan memerlukan string koneksi terpisah yang menunjuk ke Master basis data.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memilih COUNT(*) dengan DISTINCT

  2. Bagaimana TRY_CAST() Bekerja di SQL Server

  3. SQL Delete membersihkan tabel alih-alih membuat kesalahan

  4. Taktik normalisasi SQL Server:varchar vs int Identity

  5. Kolom yang dihitung di EF Code First