SORU
1 ŞUBAT 2011, Salı


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
1 ŞUBAT 2011, Salı


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BeginnersTech

    BeginnersTec

    8 NİSAN 2011
  • Tek Syndicate

    Tek Syndicat

    23 Temmuz 2008
  • tychoadragmire

    tychoadragmi

    20 Mart 2006