2015-09-01 24 views
11

ile başarısız oluyor EF geçişlerini kullanıyorum ve çok veri içeren bir tablo var. Bir beton kolonun MaxLength değerini değiştirmem gerekiyor (uzunluk kısıtlamaları yoktu)."Update-Database" komutu, TimeOut istisnası

ALTER TABLE MyDb ALTER COLUMN [MyColumn] [nvarchar](2) NULL 

Bu komut, TimeOut istisnasıyla başarısız olur. CommandTimeout i nDbContext yapıcısını herhangi bir şans olmaksızın kurmaya çalıştı.

Paket Yöneticisi Konsolu EF komutları için zaman aşımını devre dışı bırakmak veya kurmak için herhangi bir yol var mı?

cevap

16

Tek başına çözüm bulundu.

Ef5 yana Ardından senaryo ve koşmak alabilir

Update-Database -script 

kullanarak DbMigrationsConfiguration

internal sealed class MyMigrationConfiguration : DbMigrationsConfiguration<MyDbContext> 
{ 
    public Configuration() 
    { 
     CommandTimeout = 10000; // migration timeout 
    } 
} 
+0

Cevaplandı olarak işaretlemeyi unutmayın. – tschmit007

+1

Bu örnekteki Yapılandırma yöntemini çağırır? Ya da bir yapıcı yöntem olması gerekiyordu (ve örnekte istemeden sınıf adıyla eşleşmiyor)? –

+0

bunu deneyin: https://msdn.microsoft.com/en-us/data/jj591621.aspx#initializer veya bu: http://www.entityframeworktutorial.net/code-first/code-based-migration-in- code-first.aspx – deeptowncitizen

10

Alternatif senaryo dışarı değişikliği edinilebilir CommandTimeout yeni özellik var SQL Management Studio'yu veritabanına karşı kullanıyor.

+0

Bu bahşiş için teşekkürler! Bunu yapabileceğinin farkında değildim. :-) – jallen

+0

Komut dosyası nerede oluşturulur? Bunu denedim, ama bir senaryo almadı. Onu bir yer olarak kaydeder mi? –

+0

Hey, Bunu kullandığımdan beri uzun bir zaman geçti, ancak konsolun içine girdiğinden eminim? – Slavvy

0

Hemen hemen aynı şey vardı: bir sütun uzunluğunu artırmaya çalışırken zaman aşımı süresi doldu. Benim için update-database kullanmak bir saat önce gayet iyi çalışıyordu. Sorun, değiştirmeye çalıştığım veritabanı ve tablo üzerinde açık bir işlem olduğu ortaya çıktı. Bu işlemi geri aldığımda update-database komutu sorunsuz geçti.