实体框架连接字符串:SQLCe文件位置

时间:2014-02-25 10:10:30

标签: c# entity-framework

我在app.config中指定了以下条目

<add name="DefaultStoreConnection" providerName="System.Data.SqlServerCe.4.0" connectionString="Data Source=DefaultStore.sdf" />

每当我启动程序并访问数据库时,都会在以下位置创建数据库

MyAppDir/DefaultStore.sdf

但是,当我使用程序包管理器控制台创建迁移时,它会在那里创建数据库:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\DefaultStore.sdf

文件名是正确的,所以我猜实体框架只是从调用应用程序获取相对路径,如果是软件包管理器控制台:Visual Studio。我可以在app.config中指定我的应用程序目录吗?

1 个答案:

答案 0 :(得分:2)

试试这个:

像这样设置你的连接:

<add name="DefaultStoreConnection" providerName="System.Data.SqlServerCe.4.0" 
     connectionString="Data Source=|DataDirectory|\DefaultStore.sdf" />

现在您可以在|DataDirectory|函数(program.cs)中定义main这样的含义,确保它在任何类型的数据库交互之前执行:

string fileName = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
AppDomain.CurrentDomain.SetData("DataDirectory", fileName);

Environment.SpecialFolder枚举中,您也可以选择执行目录,也可以提供自定义目录。