Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 在运行时更改连接字符串–;这是正确的方法吗?_Sql Server 2008_Ef Code First_Sql Server Ce_Entity Framework 6 - Fatal编程技术网

Sql server 2008 在运行时更改连接字符串–;这是正确的方法吗?

Sql server 2008 在运行时更改连接字符串–;这是正确的方法吗?,sql-server-2008,ef-code-first,sql-server-ce,entity-framework-6,Sql Server 2008,Ef Code First,Sql Server Ce,Entity Framework 6,我有一个应用程序,它使用相同的模式连接到SQL Server和SQL CE数据库。我试图探索是否可以使用相同的数据访问层来处理这两种类型的数据库。SQL Server似乎一切正常。当连接到SQLCE时,我试图在运行时更改连接字符串,如下所示 static void Main(string[] args) { Model1 db = new Model1(); String CEConnectionString = @"Data S

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

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应该使用什么连接字符串来解决此问题?

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

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

我没有为数据库获取任何DefaultConnectionFactory。我是否需要在引用中包含任何程序集?实际获取此错误:无法使用实例引用访问成员“System.Data.Entity.Database.DefaultConnectionFactory.get”;在标题I do Database.DefaultConnectionFactory(无上下文)中使用类型名对其进行限定,然后代码运行时没有任何编译错误,但仍在SQL Server数据库中写入(而不是在CE中)。有什么建议吗?