2010-11-30 48 views
0

我有一種情況,有些客戶端通過其本地IP和一些全局來查看服務器。所以對於其中的一些IP是10.0.0.4和一些94.44.224.132。我使用ClickOnce進行部署,並使用Entity Framework生成數據庫映射。現在在我的用戶設置部分中爲連接字符串設置,併爲每個用戶存儲他自己的連接字符串。之後,對實體方面的建設我做到以下幾點:如何在每個用戶配置文件中使用唯一的實體框架連接字符串

SomeEntities context = new SomeEntities(new EntityConnection("metadata=res://*/DBModel.csdl|res://*/DBModel.ssdl|res://*/DBModel.msl;provider=System.Data.SqlClient;provider connection string=\"" + Properties.Settings.Default.ServerLocalConnectionString + "\"")); 

但也有一些問題,這樣的做法後,打開/關閉和命令執行。有沒有一些正確的方法來爲每個客戶端存儲單個連接字符串,而不是用部署來覆蓋它們(ClickOnce更可取)?

回答

0

找到的答案here

EntityConnectionStringBuilder ecb = new EntityConnectionStringBuilder(); 
    if (serverName=="Local") 
    { 
     ecb.ProviderConnectionString = Properties.Settings.Default.ServerLocalConnectionString; 
    } 
    else 
    { 
     ecb.ProviderConnectionString = Properties.Settings.Default.ServerConnectionString; 
    } 

    ecb.Metadata = "res://*/"; 
    ecb.Provider = "System.Data.SqlClient"; 
    SomeEntities context = new SomeEntities(new EntityConnection(ecb.ToString()); 

看來這是有效的。現在,我可以部署應用程序,並讓用戶決定他想要連接哪個服務器,並在更新後保留該配置,因爲它是用戶的app.config文件編寫的。

相關問題