我设置了一个WPF项目,通过Visual Studio Express 2012 for Desktop中的ADO.NET实体数据模型使用本地SQL Server Compact数据库。该项目运行良好,在第一次运行时,我可以加载所有数据,随意操作它,稍后返回,更改的数据仍然存在。
我注意到在对模式进行一些重组时,VS可见的数据只是我在创建数据库时手动输入的第一部分数据,下次我编译了我之后添加的所有数据走了!
经过一番挖掘,我得出的结论是,应用程序的编译版本使用SDF文件发送到bin / Debug文件夹的文件内容:复制如果更新的构建操作。这意味着可能需要担心多达4个不同的数据库副本:项目文件夹,调试文件夹,发行文件夹以及最终用户PC上的已部署副本。
我想在我的开发机器上拥有一个数据库副本,该数据库由调试和发布编译版本以及VS中的数据库浏览器访问,该数据库浏览器由ClickOnce安装在最终用户的PC上。我想我可以在开发期间将连接字符串更改为绝对路径,并希望我能记得在发布部署之前将其更改回亲属。
最后,我预计还需要为此应用程序发布更新,并担心如果操作不当,此类更新将删除最终用户的数据。如果可能的话,我希望能够只更新最终用户数据库的模式,而不会在我发布更新时触及数据本身。如果这是不可能的,那么我只需要确保在第一次部署之前将我能想到的每个结构都放到数据库中。
总之,我的问题如下:
如何在VS,调试和发布之间共享单个sql compact数据库?
如何在应用程序部署和更新期间处理本地数据库,并具有在不删除数据的情况下更新数据库架构的可选功能?
答案 0 :(得分:1)
我有一个类似的应用程序,我将数据库文件完全分开。因为您可能还需要执行不希望覆盖用户数据库的更新。我有一个进程在EF连接发生之前检查数据库模式。因此,当我的用户安装此应用程序时,它需要从我的网络服务器下载数据库文件并将其放在计算机上的特定位置。