SORU
3 HAZİRAN 2011, Cuma


Varlık Çerçevesi Zaman Aşımı

Zaman aşımı 30 saniye sürer bir işlev ithalat kullanırken Varlık Çerçevesi (EF) kullanarak alıyorum. Aşağıdaki denedim ve bu sorunu çözmek için mümkün olmamıştır:

Varsayılan Komut=300000 App bağlantı dizesi için zaman Aşımı eklendi.Burada önerilen EDMX dosyası olan proje yapılandırma dosyası: Entity Framework with MySQL - Timeout Expired while Generating Model

Bu benim bağlantı dizesi gibi görünür:

<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" />

Benim depoda CommandTimeout ayarı doğrudan gibi çalıştım:

private TrekEntities context = new TrekEntities();

public IEnumerable<TrekMatches> GetKirksFriends()
{
  this.context.CommandTimeout = 180;
  return this.context.GetKirksFriends();
}

Ben başka bir zamanlama gelen EF çıkmak için ne yapabilirim? Bu sadece çok büyük veri setleri için olur. Her şey küçük veri setleri ile gayet iyi çalışıyor.

Burada alıyorum hatalardan biri:

Sistem.Veri.EntityCommandExecutionException: Bir hata komut tanımı yürütülürken hata oluştu. Ayrıntılar için iç özel duruma bakın. --->Sistem.Veri.SqlClient.SqlException: zaman Aşımı süresi doldu. Zaman aşımı süresi işlem tamamlanmadan önce geçen veya sunucu yanıt vermiyor.

TAMAM çalışma var bu ne aptalca bir şey. Her iki bağlantıyı "Varsayılan Komut zaman Aşımı=300000" ve CommandTimeout 180; bağlantı dizesi Varsayılan Komut zaman Aşımı kaldırıldı, işe yaradı ayarlayın. dize vardı Cevap el ile şu şekilde: bağlam nesnesi üzerinde veri CommandTimeout ayarlamaktır

bu.bağlam.CommandTimeout = 180; Görünüşe göre bağlantı dizesinde zaman aşımı ayarları üzerinde hiçbir etkisi yoktur.

CEVAP
4 HAZİRAN 2011, CUMARTESİ


EF, bağlantı dizesi içinde belirtme varsayılan komut zaman aşımı ile bilinen bir hata var.

http://bugs.mysql.com/bug.php?id=56806

Bağlantı dizesi değeri kaldırın ve veri bağlamında nesnenin kendisi üzerinde ayarlayın. Bu bağlantıyı çakışan değeri dize çıkarın.

Varlık Çerçevesi 6:

this.context.Database.CommandTimeout = 180;

Varlık Çerçevesi 5:

((IObjectContextAdapter)this.context).ObjectContext.CommandTimeout = 180;

Çerçeve 4 ve altında varlık:

this.context.CommandTimeout = 180;

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Damien Walters

    Damien Walte

    20 AĞUSTOS 2006
  • EminemVEVO

    EminemVEVO

    12 Mayıs 2009
  • TheForgottenGamer1

    TheForgotten

    28 AĞUSTOS 2009