我有一个WPF项目设置为通过Visual Studio Express 2012 for Desktop中的ADO.NET实体数据模型使用本地SQL Server Compact数据库。该项目运行良好,第一次运行时我可以加载所有数据,随心所欲地操作它,稍后再将更改后的数据放回原处。WPF + SQL Server Compact调试和部署
我注意到,虽然对VS可见的数据只做了一小部分重构,但这只是我在创建数据库时手动输入的第一位数据,而下一次我编译了自从我添加的所有数据失去了!
经过一番深入的研究,我得出结论:应用程序的编译版本使用通过文件的Content:Copy If Newer构建动作发送到bin/Debug文件夹的SDF文件。这意味着可能有多达4个不同的数据库副本需要担心:项目文件夹,调试文件夹,发布文件夹以及最终用户PC上的部署副本。
我希望在我的开发机器上有一个单独的副本,可以通过ClickOnce安装在最终用户的PC上,由调试和发布编译版本以及VS中的数据库资源管理器访问。我想我可以在开发过程中将连接字符串更改为绝对路径,并希望在发布进行部署前,我可以记住将其更改回相对路径。
最后,我预见还需要为这个应用程序发布更新,并且担心如果这样的更新会在最终用户的数据执行不当时抹去最终用户的数据。如果可能的话,我希望只有在我发布更新时才能更新最终用户数据库的架构,而不必触摸数据本身。如果这是不可能的,那么可以接受,我只需要确保在第一次部署之前将所有可以考虑的结构放入数据库中。
总之我的问题有以下几点:
如何分享VS,调试和发布之间的单个SQL压缩数据库?
如何在应用程序部署和更新期间处理本地数据库,可选择更新数据库模式而不擦除数据的能力?
您也可以编程方式创建数据库以完全控制。 – ErikEJ
这可以工作。有没有这样的例子?如果可能的话,我想维护类的使用EF和数据源的绑定。 – CuddleBunny