2010-11-22 24 views
5

Bir projede SQL Server CE veritabanım var,% AppData% dizininde bir yerde saklamam. % AppData% desteklenen ve kullanmıyor: AncakUygulama Verileri bir (App.config) connectionString içinde nasıl kullanılır:

<?xml version="1.0"?> 
<configuration> 
    <configSections> 
    </configSections> 
    <connectionStrings> 
    <add name="EntityConnectionString" connectionString="metadata=res://*/EntityModel.csdl|res://*/EntityModel.ssdl|res://*/EntityModel.msl;provider=System.Data.SqlServerCe.3.5;provider connection string=&quot;Data Source=|ApplicationData|\Entities.sdf&quot;" providerName="System.Data.EntityClient"/> 
    </connectionStrings> 
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup> 
</configuration> 

Şimdiye kadar öğrendim (app.config) bağlantısı dizesinde uygulama veri yolu bir başvuru yapmak için bir yol bulamıyorum ayarlar sınıfı (önerilenler gibi) çalışmaz (istisna halihazırda atıldığı anda ayarlar sınıfı oluşturulmaz).

Uygulama verileri klasörünü (veya başka bir özel klasör), connectionString özelliğinde (App.Config dosyasında) kullanmak mümkün müdür?

Not: Bağlantı dizesini (kod içinde) yerel bir App.Config çözümü yerine mümkün olduğunca erken değiştirecek bir çözüm aradığım anlaşılıyor.

cevap

12

özel ortam değişkeni destek sağlama kullanın:

<connectionStrings> 
    <add name="My" connectionString="..;Data Source=|%AppData%|\Entities.sdf;.." /> 
</connectionStrings> 

kullanabilirsiniz:

using System.Configuration; // requires reference to System.Configuration.dll 

ConfigurationManager.ConnectionStrings["EntityConnectionString"].ConnectionString.Replace("%AppData%", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

Sonraki yolla, çeşitli ortam değişkenleri destekleyebilir:

sen atalım

var vars = new Dictionary<string, string> 
{ 
    { "%AppData%", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), 
    { "%Temp%", Environment.GetFolderPath(SpecialFolder.Temp) }, 
    // etc.. 
    { "%YourNonStandardVar", "YourNonStandartPath" } 
}; 

var result = ConfigurationManager.ConnectionStrings["YourString"].ConnectionString 
foreach (var v in vars) 
    result = result.Replace(v.Key, v.Value); 
+1

+1 Sadece eklemek için - bu blog yazısı http://erikej.blogspot.com/2010/07/getting-started-with-sql-server-compact.html hemen hemen tüm adımlarla yürürken CE – InSane

+0

güzel bir tane ile başlamak için teşekkürler ! –

+0

Neden koyduğunuzu bilmiyorum || |% AppData% | ? – nXqd

İlgili konular