0

我最近开始了一个新的个人项目来学习实体框架。我的最终目标是制作一款桌面游戏,它使用 SQL compact 进行数据管理,并使用 Entity Framework 作为游戏对象。实际上并不知道启动 EF 有多种方法(模型优先、代码优先、数据库优先),我选择了最明显的模型优先选择。

我现在一直在成功地使用它,但是我担心一件事,尤其是后期开发。我对游戏的目标是用户可以更新到最新版本而不会丢失任何现有数据。当前的问题是所有生成脚本本质上都是破坏性的(删除所有内容然后重新创建它) - 这意味着我无法在“生产”中针对用户 SQLCE DB 运行这些脚本,因此我需要提出一个替代计划的行动。

也就是说,是否有人推荐了有关最佳实践的解决方案?在以前的桌面应用程序中,我传统上使用 XML/二进制文件来存储数据,这使我可以轻松地更新“模式”而不影响现有数据(应用程序中的版本控制根据版本定制 Load(),而 Save( ) 始终保存在最新版本中)。

关于使用 SQLCE 处理此问题有哪些建议?

4

1 回答 1

2

如果理解正确,您需要的是利用 EF 附带的迁移。由于这个问题是一般性的,这个链接应该最好地指导你我认为你需要什么......

http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-code-based-migrations-walkthrough.aspx

如果需要,您可以手动定制迁移(并以在每个更改点逐步应用的代码形式出现),如果需要,您还可以提供“播种”。
即,您应该能够执行您需要的大部分操作,删除、删除旧的不兼容数据 - 并为您拥有的新数据播种 - 并且所有这些都与您拥有的特定迁移步骤相关。

具体来说,这将如何与您的应用程序部署一起工作,我猜这有点复杂,但这应该让您开始,然后随着每个数据库版本的破坏性更改,您的新代码更新将包含自上次更新以来的所有迁移(或者只是一个通常就足够了,即每次更新都使其成为一个)以及用于拆除或创建新事物的代码。

希望这可以帮助,

于 2012-04-05T17:44:29.743 回答