DBcontext,动态指定连接字符串

时间:2012-09-24 15:56:57

标签: entity-framework database-connection connection-string dbcontext

我正在处理使用EntityFramework的C#应用​​程序和从DbContext派生的对象。 我需要在创建MyDbContext对象的新实例时以编程方式设置连接字符串。为此,我使用以下代码:

public MyDbContext(string myString)
{
    this.Database.Connection.ConnectionString = myString
}

myString =  "Server=MYSERVER\\SQLEXPRESS; Database=MyDB; User ID=user; Password=pass;";
or
myString =  "Data Source=|DataDirectory|\\AirecCalcDatabase.sdf";

两个字符串的数据库提供程序不同。第一个是SQLExpress,第二个是SQLCompact。 如果我尝试使用第一个字符串运行此代码,我会从连接字符串中获取ArgumentException。例如“关键字无效:服务器”,但“关键字无效:数据库”。使用不带参数的DbContext时,连接字符串可以正常工作,即从app.config

读取字符串

1 个答案:

答案 0 :(得分:2)

当您想要使用CE时,您可能需要将DefaultConnectionFactory更改为指向SQL CE:

Database.DefaultConnectionFactory = new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0");

有关详细信息,请参阅this blog post