2011-02-28 16 views
27

Dbml.designer.cs bağlantı dizesini app.conf bağlantı dizgisine bağlayabilir miyim? Aşağıdaki kodu başarıyla yazıp app.config'a yazdım.dbml içinde app.config için bağlantı noktaları

public leDataContext() : 
    base(ConfigurationManager.ConnectionStrings["leConnString"].ToString(), mappingSource) 
    { 
     OnCreated(); 
    } 

Ancak ben değiştirebilir veya DBML bir tablo eklediğinizde, ben "Bağlantı" seçeneğini genişlettik bu

public leDataContext() : 
      base("Data Source=.\\SQLEXPRESS;AttachDbFilename=\"D:\\My Projects\\App_Data\\le.mdf\";Integrated Security=True;Connect Timeout=30;User Instance=True", mappingSource) 
    { 
     OnCreated(); 
    } 

içine yerine otomatik bu kodu başlayacaktır. o düzenlemek/dediğin gibi vb bir tablo eklediğinizde yeniden yazılır, çünkü elle Dbml.designer.cs dosyayı değişiklik yapmayın Yanlış

cevap

38

için "Uygulama Ayarları" olarak ayarlayın. Bunun yerine None için .dbml tasarımcı dosyası için Connection özelliğini ayarlayın ve parametresiz kurucu ile kısmi bir sınıf ekleyin:

public partial class leDataContext 
{ 
    public leDataContext() : 
     base(ConfigurationManager.ConnectionStrings["leConnString"].ToString()) 
    { 
     OnCreated(); 
    }  
} 
+0

i bağlantflsfl boş olması yapıp yeni eklemesini diğer kurucular ile birlikte kurucu. Ama yine de "base (" Data Source =. \\ SQLEXPRESS; AttachDbFile..' public leDataContext(): base (System.Configuration.ConfigurationManager.ConnectionStrings ["leConnString"]) olarak değiştirir. ToString()) { OnCreated { (); } halka leDataContext (string bağlantısı): baz (bağlantı, mappingSource) { OnCreated(); } halka leDataContext (System.Data.IDbConnection bağlantısı): tabanı (bağlantı, mappingSource) { OnCreated(); } – VeecoTech

+1

@belinq: Yeni bir dosya eklemeli ve orada parametrik olmayan kurucu tanımlamalısınız (kısmi sınıfta). Bu durumda bu kurucunun üzerine yazılmaz. Anladığım kadarıyla bu kurucuyu 'dbml.designer.cs' dosyasına koydunuz - sorun bu. – Alex

+1

Not: Visual Studio 2013'te bu bağlantı özelliği yok, bu yüzden bağlantı düğümünü doğrudan dbml xml dosyasından kaldırdım. –

41

Bu daha @ Alex'in cevabı bir uzantısı gibidir.

Adım 1: .dbml dosyanızın bağlantı özelliğini “none” olarak ayarlayın.

enter image description here

Adım 2: .dbml dosya için mevcut kısmi sınıfın aynı adla yeni ayrı kısmi sınıf oluşturun. Ve parametresiz yapıcıyı kullanarak connectionString özelliğini ayarlayın.

public partial class DataClassesDataContext 
{ 
    public DataClassesDataContext() : base(ConfigurationManager.ConnectionStrings["Dev-connString"].ConnectionString) 
    { 
    OnCreated(); 
    } 
} 

Adım 3: Neredeyse Bitti! Son olarak, aşağıda gösterildiği gibi, application.config dosyanızdaki connectionString öğesini tanımlamanız gerekir. Aksi durumda olacağını yeniden derlemek kod, gerek kalmadan

<connectionStrings> 

    <add 
    name="Dev-connString" 
    connectionString="Data Source=yasser-home;Initial Catalog=pp;Persist Security Info=True;User ID=sa;Password=gogole" 
    providerName="System.Data.SqlClient" /> 

</connectionStrings> 

Artık kolaylıkla app.config dosyasından connectionString değiştirebilir

.

Neden ayrı bir kısmi sınıf oluşturdunuz? Mevcut Dbml.designer.cs dosyasını düzenleyemiyorum? Eğer/düzenlemek eklerken/saklanan bir tablo silmek yeniden yazılır çünkü

, Dbml.designer.cs dosyasını el değişiklik yapmayın proc vb

+0

teşekkürler. ve bağlantı özelliğini yok olarak ayarlarsınız, aksi halde kendi kurucusunu tanımlar – symbiont

+0

Küçük ekleme; Hiçbirini olmayan bağlantıyı ayarlamak için dbml'yi açmanız gerekir, böylece soldaki model şemasını gösterir. Sonra şemanın içerisine sağ tıklayın ve özellikleri tıklayın. – Yan

+0

Bu, daha fazla talimat içerdiği için cevap olmalıdır. – levis84

İlgili konular