2013-01-06 29 views
16

Projem için Entity Framework 5.0 kullanıyorum. İnternete baktım ve varlık çerçeve veri içeriği için bağlantı dizesi için bir string parametresi olan başka bir kurucu olduğunu gördüm.Entity Framework datacontext öğesinde bağlantı dizesi olan kurucu yok

Oluşturuldu data context Benim böyle bir yapıcı yok. DbContext tabanına baktım ve böyle bir kurucu var.

Kod yanlış mı oluşturuldu? Kodu bir veritabanından oluşturdum. Nedeni bu olabilirmiydi?

Yeni yapıcı eklemek için kod oluşturma şablonu dosyasını düzenleyebileceğimi ortaya çıkar. Şimdi yeni kurucuyu ekledim. Dosya, edmx modelinizin altındaki bir MyDataContext.tt dosyasıdır. Orada şablon kodu ile karışık C# kodu var. Hiçbir argüman yapıcıyı oradan kopyalayıp yapıştırabilirsiniz. Sonra bunu değiştirebilir ve ona bir dize argümanı ekleyebilir ve bu argümanı aşağıdaki gibi DbContext yapıcısına iletebilirsiniz: base (myString).

+1

Farkı daha net yapmak için kodları gönderir misiniz ..? –

+0

Sizi el ile eklemekten ne engelliyorsunuz? –

+0

Ayrıca, DbContext "Code-First" dir. Mevcut bir veritabanınız varsa, tipik kullanım "Veritabanı Öncelikli" dir. –

cevap

22

Gerektiğinde bir tane ekleyebilirsiniz.

Oluşturulan dosyayı kontrol edin ve aşırı yüklenmiş bir kurucu ekleyin. Her kuşak elle bunu her seferinde eklemek gerekecektir olarak

public YourContext(string connectionStr) 
     : base(connectionStr) 
    { 


    } 

Muhtemelen daha iyi

olsa kısmi sınıfta bu tanımlamaya.

+0

Ayrıca .tt dosyasını düzenleyebileceğime inanıyorum ama bu dosyanın da otomatik olarak üretilip üretilmediğini bilmiyorum. – Alecu

+1

, yeni bir kurucu ekleyerek .tt dosyasını test etti ve değiştirdi. şimdi çalışıyor – Alecu

+1

@Alecu: Aynı sorunu yaşadım ve aynı şeyi yaptım: bilmek güzel! – sthiers