最近做wpf应用程序,遇到一个很奇怪的问题,我用代码往数据库里插入数据成功了,但去vs的服务器资源管理器里查看数据库总是最开始的样子,什么都没有插入进去,然后就检查代码,打日志查看sql语句,发现都没有问题,纠结了一个晚上,今天无意间才发现问题所在。
原因:wpf窗口应用程序调试时会在debug目录下生成一份临时数据库,就跟把数据存在内存里似得,再次调试就会把原来的数据库清掉重新复制一份数据库在debug目录下,但在vs里看的却是最原始的那一个数据库,所以导致总是无法插入数据。
解决办法:在主窗口代码里添加如下代码,便可解决问题
1 public login() 2 { 3 string dataDir = AppDomain.CurrentDomain.BaseDirectory; 4 if (dataDir.EndsWith(@"inRelease") || dataDir.EndsWith(@"inDebug")) 5 { 6 dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName; 7 AppDomain.CurrentDomain.SetData("DataDirectory", dataDir); 8 } 9 InitializeComponent(); 10 }