在给我的学生做演示3层架构开发的时候,我用vs2005的WinForm方式,建立DAL,BLL及UI3层架构,在DAL层采用强类型的数据集,BLL层处理逻辑. 程序运行起来后对于TableAdapter的Update,Insert,Delete等操作都能生效,然后我观察那个MDF文件,居然数据没有更新. 关闭WinForm重启WinForm,发现所作的修改只是影响到了强类型的数据集,而数据集最终没有反应到MDF文件上面.而TableAdapter的方法调用返回值表明我的方法是成功的!
环境:
1.在Project下面建立了App_Data目录,然后放置MDF文件,直接双击MDF文件采用AttachDbFileName的方式挂接MDF到SQLServer Express;
2.添加新项DataSet,然后拖动1中的表到DataSet生成强类型的数据集,进而构建DAL层的TableAdapter方法集合及BLL层,完成系统.
调试发现:每次我运行WinForm,系统都会拷贝Project下和源代码cs文件同一目录级别的App_Code目录到bin目录下面,然后连接了bin目录下的mdf文件.
这样我每次运行都会覆盖bin\App_Code\*.mdf文件,自然我无法修改,真是郁闷!
将mdf文件直接挂接到SQLServer,修改settings文件以SQLServer方式连接而非mdf文件方式,程序正常!
如果不去调试,发布的时候直接拷贝bin目录下面的东西,估计就没有问题了. 或者我们可以考虑将App_Code目录放到bin下,而不是跟cs源代码文件同一目录级别. 产生这个原因是因为我考虑我在asp.net下面没有问题而沿袭到了winform. 细想这也是自然,链接组非常内部的 database=|DataDirectory|\*.mdf在webform内代表当前路径,而在winform里面确是bin目录了.
所以一定要小心了.哈哈