Birkaç veritabanına sahibim, bunların şeması aynı. Veritabanını ilk kullandığımda, edmx dosyasını oluşturduğumda bağlantı dizesi belirtildi. Bilmek istiyorum, bağlantı dizgisini değiştirmenin bir yolu var mı? Bu, hangi veritabanının çalışacağını seçebilirim. Thx önceden!Önce veritabanında bağlantı dizesini değiştirmenin bir yolu var mı?
cevap
Web.config dosyasındaki bağlantı dizesini değiştirin. önemli değil çünkü
<connectionStrings>
<add name="SandBoxEntities" connectionString="metadata=r... />
</connectionStrings>
Ben gerçek bağlantı dizesi kısaltılmış - sadece size web.config dosyasında bakmak için bir fikir vermek istedik.
Ayrıca bağlantı dizelerinizi programatik olarak da değiştirebilirsiniz. Example 16.2. Programmatically modifying an EntityConnectionString'a bakın.
Bağlantı dizelerini web.configs adresinde saklamıyoruz, bu nedenle kabul edilen çözüm bizim için çalışmaz. sadece baz DBContext yapıcısı aracılığıyla bağlantı dizgesi çalışırsanız, aşağıdaki özel durum alırsınız:
Kanununda kullanılırsaKod düzgün çalışmayabilir Veritabanı Birinci ve Model İlk gelişimi için T4 şablonları kullanarak oluşturulan
İlk mod Önce Veri veya Model Önce kullanmaya devam etmek için, Entity Framework bağlantı dizesinin yürütme uygulamasının yapılandırma dosyasında belirtildiğinden emin olun. Bu ilkeleri kullanmak için, önce Veritabanı Önce ya da Önce Modeli'nden, Kod İlkesi ile öznitelikleri ya da DbModelBuilder API'sini kullanarak herhangi bir ek yapılandırma ekleyin ve sonra bu özel durumu atanan kodu kaldırın. Bu sorunu çözmek için
, aşağıdaki gibi bağlamda kısmi bir sınıf oluşturmak ve ek EF meta ile bağlantı dizesini biçimlendirmek (MyContext sizin bağlam model adı nerede (örneğin model adınız MyModel.edmx daha vardır aşağıda her üç uzantıları ile MyModel
değiştirilir kodunda MyContext
, .ssdl, .msl)) kullanılan .csdl:
public partial class MyContext
{
public MyContext(string connStr)
: base(string.Format(@"metadata=res://*/MyContext.csdl|res://*/MyContext.ssdl|res://*/MyContext.msl;provider=System.Data.SqlClient;provider connection string='{0}'", connStr))
{
}
}
Bunun benim için çalışmasını sağlamak için, "'u bu yanıtta açıklandığı gibi tek bir alıntı olarak değiştirmeniz gerekiyordu: http://stackoverflow.com/a/7004173/994464 – Brenton
Basit ve basit. –
Sen web.config'de birden bağlantı dizesini tanımlamak ve sonra belki kodunuzda kullanabilirsiniz senin işin. örneğin : `
<connectionStrings>
<add name="conStr1" connectionString="metadata=r... />
</connectionStrings>`
<connectionStrings>
<add name="conStr2" connectionString="metadata=r... />
</connectionStrings>`
ve
böylece ve bağlam sınıf yapıcısı üzerindeki parametre olarak bağlantı dizesi adını almak:public MyContext(string connStr)
: base(connStr) { }
Ok. şimdi aşağıdaki gibi kodunuzda kullanabilirsiniz:
using (var db = new MyContext("name=conStr1"))
{
//your code here
}
ve sonra
using (var db = new MyContext("name=conStr2"))
{
//your code here
}
- 1. Doğrudan bir ikili SONAME değiştirmenin herhangi bir yolu var mı?
- 2. İşaretçiyi değiştirmenin daha idiomatik bir yolu var mı?
- 3. Kelimenin bir kısmını önişlemciyle değiştirmenin herhangi bir yolu var mı?
- 4. UINavigationController kullanmadan iOS'ta Görünümleri değiştirmenin bir yolu var mı?
- 5. Yasemin casuslarını argümanlara göre değiştirmenin herhangi bir yolu var mı?
- 6. IE6 için HTTP üstbilgilerini değiştirmenin herhangi bir yolu var mı?
- 7. Selenium Webdriver kullanarak URL metnini değiştirmenin bir yolu var mı?
- 8. Jenkins Maven yapısının çalışma dizinini değiştirmenin bir yolu var mı?
- 9. Sayfayı yenilemeden tarayıcınızın adres çubuğunu değiştirmenin bir yolu var mı?
- 10. Pytest'in .cache dizininin yerini değiştirmenin bir yolu var mı?
- 11. Yığın görünümündeki fotoğrafların sırasını değiştirmenin herhangi bir yolu var mı?
- 12. Varsayılan kurulum diyaloğunda logoyu değiştirmenin herhangi bir yolu var mı?
- 13. CMIS havuzunun özelliklerini ayarlama/değiştirmenin bir yolu var mı?
- 14. TcpClient'te kullanılacak yerel bağlantı noktasını belirtmenin bir yolu var mı?
- 15. Bir işlevin argümanlarını başka bir javascript işlevinden değiştirmenin bir yolu var mı?
- 16. Yerel tiplenmiş bir sabiti * dışında bildirilen rutini değiştirmenin bir yolu var mı?
- 17. Bir sınıfa ait özelliği jquery ile değiştirmenin bir yolu var mı?
- 18. C# içindeki bir dizgede char'i değiştirmenin kolay bir yolu var mı?
- 19. PDF dosyasındaki bir metni itextsharp ile değiştirmenin bir yolu var mı?
- 20. Konsol uygulamasında bağlantı dizesini alın
- 21. MembershipProvider kodundaki bağlantı dizesini değiştirin
- 22. Web.config dosyasındaki bağlantı dizesini msdeploy
- 23. Marionette ItemView şablonunu RequireJS ile dinamik olarak değiştirmenin bir yolu var mı?
- 24. Javascript'i birleştirmek için asp.net'deki html çıktı akışını yakalayıp değiştirmenin bir yolu var mı?
- 25. Sağdan sola yazılan dilde sol ve sağ css değerlerini değiştirmenin bir yolu var mı?
- 26. Model görünümü denetleyicisi görünümünün animasyon stilini değiştirmenin bir yolu var mı?
- 27. java kullanarak programlı olarak gmail şifresini değiştirmenin herhangi bir yolu var mı?
- 28. Perl komut dosyasını kullanarak Windows klasör simgesini değiştirmenin bir yolu var mı?
- 29. Otomatik olarak oluşturulan varsayılan "id" sütununu değiştirmenin bir yolu var mı?
- 30. ModelSim'de yaprak adlarını TCL API'sı üzerinden değiştirmenin bir yolu var mı?
ben web.config'de bağlantı dizesini ayarlamak için biliyorum, ne bilmek istiyorum zamanında değiştirmek nasıl, Bu, hangi veritabanını kullanacağımı seçebilirim. Edmx dosyası oluşturduğumda bağlantı dizesi zaten ayarlanmış, çalışma zamanında değiştirmenin bir yolu var mı? – James
Tamam - Cevabımı düzenledim ve size bunu nasıl yapacağınızı gösteren bir bağlantı verdim. –
Bu soru ve cevaplar, her şeyi uygun bir özetle yazdı: http://stackoverflow.com/questions/14440698/setup-entity-framework-for-dynamic-connection-string. –