Saya mendapatkan batas waktu menggunakan Entity Framework (EF) saat menggunakan fungsi impor yang membutuhkan waktu lebih dari 30 detik untuk menyelesaikannya. Saya mencoba yang berikut ini dan belum dapat menyelesaikan masalah ini:
Saya menambahkan Default Command Timeout=300000
ke string koneksi di file App.Config dalam proyek yang memiliki file EDMX seperti yang disarankan di sini .
Seperti inilah string koneksi saya:
<add
name="MyEntityConnectionString"
connectionString="metadata=res://*/MyEntities.csdl|res://*/MyEntities.ssdl|
res://*/MyEntities.msl;
provider=System.Data.SqlClient;provider connection string="
Data Source=trekdevbox;Initial Catalog=StarTrekDatabase;
Persist Security Info=True;User ID=JamesTKirk;Password=IsFriendsWithSpock;
MultipleActiveResultSets=True;Default Command Timeout=300000;""
providerName="System.Data.EntityClient" />
Saya mencoba mengatur CommandTimeout di repositori saya secara langsung seperti:
private TrekEntities context = new TrekEntities();
public IEnumerable<TrekMatches> GetKirksFriends()
{
this.context.CommandTimeout = 180;
return this.context.GetKirksFriends();
}
Apa lagi yang bisa saya lakukan untuk mengeluarkan EF dari waktu habis? Ini hanya terjadi untuk dataset yang sangat besar. Semuanya berfungsi baik dengan dataset kecil.
Inilah salah satu kesalahan yang saya dapatkan:
System.Data.EntityCommandExecutionException: Terjadi kesalahan saat menjalankan definisi perintah. Lihat pengecualian dalam untuk detailnya. ---> System.Data.SqlClient.SqlException: Batas waktu kedaluwarsa. Periode waktu habis berlalu sebelum penyelesaian operasi atau server tidak merespons.
OK - saya berhasil dan ini konyol apa yang terjadi. Saya memiliki string koneksi dengan Default Command Timeout=300000
dan CommandTimeout diatur ke 180. Ketika saya menghapus Default Command Timeout
dari string koneksi, itu berhasil. Jadi jawabannya adalah secara manual mengatur CommandTimeout di repositori Anda pada objek konteks Anda seperti:
this.context.CommandTimeout = 180;
Tampaknya pengaturan pengaturan batas waktu dalam string koneksi tidak berpengaruh padanya.
"
dalam string.
NONCLUSTERED
indeks ke beberapa tabel, ini menyelesaikan masalah batas waktu bagi kami.