Varlık Çerçevesi: zaten açık bir veri okuyucu bu Komut ile ilgili
Varlık Çerçevesi kullanıyorum ve zaman zaman bu hatayı alırsınız.
EntityCommandExecutionException
{"There is already an open DataReader associated with this Command which must be closed first."}
at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands...
Herhangi bir manuel bağlantı yönetimi yapmıyorum bile.
Okuduğum kadarıyla, yokMultipleActiveResultSetsbağlantı, True bunu ayarlamak için tavsiye edilir bağlıyor.
Ama tek yol bu sorunu geçici olarak almak için mi? Bir şekilde bağlantı EF aç, ya da bu özel durum/yakalamak ve bağlantıyı kapatmak olmadığını kontrol edin.
zaten MergeOption benim kuruluşların tüm ayarları yaptım.NoTracking (muhtemelen alakasız ama bağlantısız bir dizi ile çalışmak için çalışıyorum..
bu hata zaman zaman çok olur.
kod hata tetikler (okuma kolaylığı için kısaltılmış):
if (critera.FromDate > x) {
t= _tEntitites.T.Where(predicate).ToList();
}
else {
t= new List<T>(_tEntitites.TA.Where(historicPredicate).ToList());
}
kullanarak yeni bir bağlantı her zaman açmak için desen Atmayın.
using (_tEntitites = new TEntities(GetEntityConnection())) {
if (critera.FromDate > x) {
t= _tEntitites.T.Where(predicate).ToList();
}
else {
t= new List<T>(_tEntitites.TA.Where(historicPredicate).ToList());
}
}
hala sorunlu
neden eğer zaten açıksa EF bir bağlantı yeniden olmaz.
CEVAP
Bağlantı kapatma ile ilgili değildir. EF doğru bağlantısını yönetir. Bu sorunun benim anladığım birden fazla veri alma komutları bir sonraki veri okuyucu ilk okuma tamamlandı önce idam ederken tek bağlantı üzerinde yürütülen (veya birden fazla seçer ile tek komut) vardır. Bu özel durumu önlemek için tek yol MultipleActiveResultSets birden fazla iç içe DataReaders = devre izin vermektir. Bu her zaman olur, başka bir senaryo sorgu sonucu ile yineleme yapmak zaman alır (IQueryable) ve yineleme içinde yüklü varlık için tembel yükleme tetiklemiş olursunuz.
Zaten açık bir veri okuyucu öncelikle ...
Eğer bir nesne zaten Varlık Çerçevesi ...
Bir sınıf varlık çerçevesi tarafından ...
varlık nesne İEntityChangeTracker bird...
Nasıl Varlık Çerçevesi Veri İçeriği sa...