Jak*_*ner 7 c# entity-framework sql-server-ce
我正在开发一个需要一个小型本地数据库的客户端系统.我想避免安装SQL Server Express,并决定使用SQL Server 4.
我使用Entity Framework 5进行数据访问,并创建了自定义上下文.在开发中一切正常,我可以使用app.config设置特定的文件位置或动态Data Source=|DataDirectory|\MyDatabase.sdf.
但在部署时,我希望数据库位于users documents文件夹中:
\My Documents\ApplicationName\MyDatabase.sdf
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我只需要能够在代码中设置自定义连接字符串!
这是我到目前为止所尝试的:
private MyApplicationDataContext(string connectionString)
: base(connectionString)
{
}
public static MyApplicationDataContext CreateInstance()
{
var directory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var path = Path.Combine(directory, @"ApplicationName\MyDatabase.sdf");
//var connectionString = string.Format("provider=System.Data.SqlServerCe.4.0;provider connection string=\"Data Source={0}\"", path);
var connectionString = string.Format("Data Source={0}", path);
return new MyApplicationDataContext(connectionString);
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我尝试了两种连接字符串,但都导致异常.
不支持关键字:'provider'.
和
提供程序未返回ProviderManifestToken字符串.
Jak*_*ner 10
啊,我终于做对了!
如果其他人有同样的问题,我会包含调整后的代码.诀窍是在Database.DefaultConnectionFactory上设置连接字符串
private MyApplicationDataContext()
{ }
public static MyApplicationDataContext CreateInstance()
{
var directory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var path = Path.Combine(directory, @"ApplicationName\MyDatabase.sdf");
// Set connection string
var connectionString = string.Format("Data Source={0}", path);
Database.DefaultConnectionFactory = new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0", "", connectionString);
return new MyApplicationDataContext();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4854 次 |
| 最近记录: |