我有一个WPF C#应用程序和一个SQL Server Compact 4.0数据库。最初,我的数据源指向数据库的位置,如下所示:
public static SqlCeConnection sqlCeConnection = new SqlCeConnection(@"C:\VSP Road Maintenance Solution\VSPApp_Mono\VSPApp\VSPCompactDatabasse.sdf");
这在我的本地计算机上运行良好,但是当我想打包应用程序(ClickOnce)时,它在客户端的计算机上无效。在阅读有关创建ms sql server压缩数据库并部署它的MSDN文档以及其他相关类似问题(例如http://social.msdn.microsoft.com/Forums/sqlserver/en-US/dc31ea59-5718-49b6-9f1f-7039da425296/where-is-datadirectory-?forum=sqlce和http://msdn.microsoft.com/en-us/library/37z40s1c(v=vs.110).aspx
之后我尝试通过C#访问AppDomain
(在App.xaml.cs
中):
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
Process p = Process.GetCurrentProcess(); // Pick desired process
p.PriorityClass = ProcessPriorityClass.RealTime; // Assign priority
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.SetData("DataDirectory", @"C:\VSP Road Maintenance Solution\VSPApp_Mono\VSPApp");
}
现在只需创建一个与数据库的连接:
public static string dbFileName = "VspCompactDatabase.sdf";
SqlCeConnection sqlCeConnection = new SqlCeConnection(@"Data Source=|DataDirectory|\" +dbFileName);
这也适用于我的本地计算机,但是当我创建ClickOnce包时。该应用程序似乎没有找到数据库。所有必备软件都已安装。为什么当应用程序部署在不同的机器上时,似乎与数据库无关?