在运行时更改连接字符串 - 这是正确的方法吗?

时间:2014-11-03 16:29:48

标签: sql-server-2008 ef-code-first sql-server-ce entity-framework-6

我有一个应用程序连接到具有相同模式的SQL Server和SQL CE数据库。我正在尝试探索是否可以使用相同的数据访问层来处理这两种类型的数据库。一切似乎都适用于SQL Server。当连接到SQL CE时,我试图在运行时更改连接字符串,如下所示

static void Main(string[] args)
        {
            Model1 db = new Model1();

            String CEConnectionString = @"Data Source=|DataDirectory|\EmployeesCE.sdf;;Password=mypassword;Persist Security Info=True";
            db.Database.Connection.ConnectionString = CEConnectionString;
            db.Persons.Add(new Person() { ID = 33, Name = "Sam", Description = "new stuff" });
            db.SaveChanges();

        }

现在,我在尝试在数据库中添加新人时遇到以下错误。

  

无法完成操作。提供的SqlConnection没有   指定初始目录或AttachDBFileName。

这是在运行时更改连接字符串以使用SQL CE数据库的正确方法吗?如果是这样,SQL CE应该使用什么连接字符串来摆脱这个问题?

1 个答案:

答案 0 :(得分:1)

您需要使用基于代码的配置更改DefaultConnectionFactory:

public class MyConfiguration : DbConfiguration 
{ 
    public MyConfiguration() 
    { 
        SetDefaultConnectionFactory(new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0","...","...")); 
    } 
} 

http://msdn.microsoft.com/en-us/data/jj680699.aspx