我在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中指定我的应用程序目录吗?
答案 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
枚举中,您也可以选择执行目录,也可以提供自定义目录。