2012-09-30 38 views
6

我在Windows應用程序中使用了SQL Server CE 4.0,並使用Entity Framework來創建它的模型。如何使用SQL Server CE的動態連接字符串?

它工作正常,但我的問題是它沒有構造函數來更改連接字符串,並且默認情況下它從app.config文件讀取連接字符串。

using (var Context = new MyEntitiesModel(//has no constructor)) 
{ 
     ... 
} 

我創建一個動態連接字符串和

using (var Context = new MyEntitiesModel()) 
    { 
     Context.Database.Connection.ConnectionString = entityConnection.ConnectionString; 
    } 

它正常工作,通過這種方式,但如果我刪除app.config文件中的另一個連接字符串,它給了我這個。

error = invalid metasource ....

,因爲默認的構造函數使用它

我如何處理呢?

+0

是不是有一個構造函數將DbConnection作爲參數? –

+0

是的,有沒有一個構造函數來改變連接字符串 – motevalizadeh

+1

你不能只是在app.config文件中的虛擬連接字符串? – Seph

回答

2

創建您自己的構造函數。 MyEntitiesModel是部分類,您可以添加您自己的部分類,並添加接受連接字符串的構造函數。

public partial class MyEntitiesModel { 
    public MyEntitiesModel(string connectionString) : base(connectionString) { } 
} 
+0

錯誤:如果在代碼優先模式下使用,使用數據庫優先和模型優先開發的T4模板生成的代碼可能無法正常工作。要繼續使用Database First或Model First,請確保在執行應用程序的配置文件中指定了實體框架連接字符串。要使用這些類,這些類是從Database First或Model First生成的,使用Code First添加任何使用屬性或DbModelBuilder API的其他配置,然後刪除引發此異常的代碼。 – motevalizadeh

+0

連接字符串是怎樣的? –

+0

「data source = | DataDirectory | \\ MyDb.sdf; password = xxx; persist security info = True」; – motevalizadeh

1

使用DbContext的Im。有幾個重載構造函數,例如: ObjectContext也有一組類似的構造函數重載。

System.Data.Entity的的DbContext例如

Context = new BosMasterEntities(nameOrConnectionString: nameOrConnectionString); 

您可以同時連接到多個數據塊。