我正在用WPF中的C#编写一个实用程序,允许用户创建角色扮演场景,包括怪物,物品,角色等。
用户将创建或导入元素(怪物等),然后使用导入的元素创建场景。程序使用的所有内容都是在程序中创建的,因此我没有任何我要访问的预定义数据。
这是我的问题 - 存储和加载数据的最佳方法是什么?
目前,我正在使用XML序列化将对象序列化为XML文件,并在以后重新加载。这有点笨重,我想知道数据库是否会更有效 - 数据肯定是关系型的(怪物有物品,地图有怪物等),并且可能有数十或数百个条目。
我不需要使用实际的代码或方法行,只需知道在这种情况下通常会使用哪种文件存储/检索(在.NET中)。
谢谢!
答案 0 :(得分:1)
正如你自己所说:数据是关系型的,所以关系数据库可能会有所帮助。使用Sql Server Compact,您可以拥有在打开时加载到Sql Server中的简单文件,这些文件以您想要的名称命名。这样您就不必管理传统的数据库服务器,用户甚至不知道涉及数据库。
要访问数据,我个人非常喜欢Linq-to-Sql,它直接在C#中提供类型安全查询。
答案 1 :(得分:0)
数据库是定义的方式。使用an object-relational mapper与数据库通信,这可能会在开始时满足您99%的需求。
我更喜欢为需要不同进程互通的场景保留XML序列化。
答案 2 :(得分:0)
这实际上取决于你需要达到的目标。数据库有一个位置,但平面文件也非常适合数据(通过序列化)。
因此; xml给你什么问题?如果您可以回答那个,那么您将知道您想要解决的痛点。你提到“游戏”,确实平面文件趋势更合适(假设你想要最小的开销等),但通常都可以。二进制序列化在CPU和磁盘方面可能更有效(但我不建议使用BinaryFormatter
- 当您更改类型时它会咬你。)
我不是反 - 数据库(远离它) - 我只是想提出一个平衡的观点;-p
答案 3 :(得分:0)
您可以使用对象数据库(例如db4o)。好处包括:类型安全,没有ORM,索引信息......