如何使用动态连接字符串连接SQL Server CE?

6

我在我的Windows应用程序中使用了SQL Server CE 4.0,并使用Entity Framework创建了其数据模型。

虽然它的运行良好,但我的问题是它没有构造函数来更改连接字符串,默认情况下会从app.config文件中读取连接字符串。

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

我创建了一个动态连接字符串并且

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

如果我在app.config文件中删除另一个连接字符串,那么它以这种方式工作得很好,但会给我报错:

错误 = 无效的元数据源....

因为默认构造函数使用了它。

我该如何处理这个问题?


难道没有一个以DbConnection为参数的构造函数吗? - Thomas Levesque
是的,没有构造函数可以更改连接字符串。 - motevalizadeh
1
你能不能在app.config文件中留下一个虚拟连接字符串呢? - Seph
2个回答

2
创建自己的构造函数。 MyEntitiesModel 是一个部分类,您可以添加自己的部分,并添加接受连接字符串的构造函数。
public partial class MyEntitiesModel {
    public MyEntitiesModel(string connectionString) : base(connectionString) { }
}

错误:使用T4模板生成的代码用于数据库优先和模型优先开发,在代码优先模式下可能无法正常工作。要继续使用数据库优先或模型优先,请确保在执行应用程序的配置文件中指定了Entity Framework连接字符串。要使用从数据库优先或模型优先生成的这些类,需要使用属性或DbModelBuilder API添加任何其他配置,然后删除引发此异常的代码。 - motevalizadeh
你的连接字符串是什么样子的? - Ladislav Mrnka
数据源=|DataDirectory|\MyDb.sdf;密码=xxx;持久安全信息=True - motevalizadeh
1
你正在使用EDMX吗?当使用EDMX映射时,这不是有效的连接字符串。你必须使用与app.config中使用的格式相同的连接字符串。 - Ladislav Mrnka

1

我正在使用DbContext。有几个重载构造函数,例如:ObjectContext也有类似的一组构造函数重载。

System.Data.Entity DbContext示例

Context = new BosMasterEntities(nameOrConnectionString: nameOrConnectionString);

您可以同时连接多个数据库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接