Perintah saya terus waktu habis, jadi saya perlu mengubah nilai batas waktu perintah default.
Saya sudah menemukan myDb.Database.Connection.ConnectionTimeout
, tapi itu readonly
.
Bagaimana saya bisa mengatur batas waktu perintah di Entity Framework 5 ?
Database.CommandTimeout
tidak lagi hanya bacaDatabase.Connection.ConnectionTimeout
. Ngomong-ngomong, saya akan mengatakan bahwa ituDatabase.CommandTimeout
adalah hal yang benar dalam hal permintaan Anda habis waktu (pengecualianSystem.Data.Entity.Core.EntityCommandExecutionException
mengandungSystem.Data.SqlClient.SqlException: Timeout expired.
).Jawaban:
Coba ini pada konteks Anda:
Jika Anda ingin menentukan batas waktu dalam string koneksi, gunakan
Connection Timeout
parameter seperti pada string koneksi berikut:Sumber: Cara: Menentukan String Koneksi
sumber
ObjectContext
di konstruktor ini kadang-kadang perintah konsol PowerShell / NuGet akan gagal secara melingkar .Kamu bisa memakai
DbContext.Database.CommandTimeout = 180;
Ini sangat sederhana dan tidak diperlukan pemeran.
sumber
Fluent API
formulir EF.Konteks parsial saya terlihat seperti:
Saya meninggalkan
SetCommandTimeOut
publik jadi hanya rutinitas yang saya perlukan untuk waktu yang lama (lebih dari 5 menit) saya memodifikasi daripada timeout global.sumber
Dalam kode konstruktor yang dihasilkan, ia harus memanggil
OnContextCreated()
Saya menambahkan kelas parsial ini untuk memecahkan masalah:
sumber
Saya memperluas jawaban Ronnie dengan implementasi yang lancar sehingga Anda dapat menggunakannya seperti:
dm.Context.SetCommandTimeout(120).Database.SqlQuery...
sumber
Untuk Pendekatan Database pertama:
Kita masih bisa mengaturnya dalam konstruktor, dengan menimpa Templat ContextName.Context.tt T4 dengan cara ini:
Database.CommandTimeout = 180;
adalah perubahan acutaly.Output yang dihasilkan adalah ini:
Jika Anda mengubah Model Database Anda, template ini tetap, tetapi kelas yang sebenarnya akan diperbarui.
sumber
System.Configuration.ConfigurationManager.AppSettings["keyname"]
@shasSama seperti jawaban lain, tetapi sebagai metode ekstensi:
sumber
Saya hanya mengalami masalah ini dan menyelesaikannya dengan memperbarui file konfigurasi aplikasi saya. Untuk koneksi yang dimaksud, tentukan "Connection Timeout = 60" (Saya menggunakan kerangka kerja versi 5.0.0.0)
Pengaturan ConnectionTimeout
sumber
Anda dapat menggunakan ini sederhana:
dbContext.Database.SetCommandTimeout(300);
sumber