1

我正在用 WPF 中的 C# 编写一个实用程序,它允许用户创建角色扮演场景,包括怪物、物品、角色等。

用户将创建或导入元素(怪物等),然后使用导入的元素创建场景。程序使用的所有内容都是在程序中创建的,因此我没有任何要访问的预定义​​数据。

这是我的问题 - 存储和加载数据的最佳方式是什么?

目前,我正在使用 XML 序列化将对象序列化为 XML 文件并稍后重新加载它们。这有点笨拙,我想知道数据库是否会更有效 - 数据肯定是相关的(怪物有物品,地图有怪物等),并且可能有数十或数百个条目。

我不需要使用实际的代码行或方法,只需了解在这种情况下(在 .NET 中)通常会使用哪种文件存储/检索。

谢谢!

4

4 回答 4

1

正如您自己所说:数据是关系的,因此关系数据库可能会有所帮助。使用 Sql Server Compact,您可以拥有简单的文件,可以随意命名,在打开时加载到 Sql Server 中。这样您就不必管理传统的数据库服务器,用户甚至不会知道其中涉及到数据库。

要访问数据,我个人非常喜欢 Linq-to-Sql,它直接在 C# 中提供类型安全的查询。

于 2010-03-07T15:55:32.753 回答
0

It really depends on what you need to achieve. Databases have a place, but flat files are also perfectly fine for data (via serialization).

So; what problems is the xml giving you? If you can answer that, then you'll know what the pain points are that you want to address. You mention "game", and indeed flat files tend to be more suitable (assuming you want minimum overhead etc), but either would normally do fine. Binary serialization might be more efficient in terms of CPU and disk (but I don't recommend BinaryFormatter - it will bite you when you change the types).

I'm not anti-database (far from it) - I just wanted to present a balanced viewpoint ;-p

于 2010-03-07T19:30:58.060 回答
0

您可以使用对象数据库(例如db4o)。好处包括:类型安全、无 ORM、索引信息……

于 2010-03-07T20:03:15.823 回答
0

数据库绝对是要走的路。使用对象关系映射器与数据库通信,这可能会在一开始就满足您 99% 的需求。

对于需要不同进程互通的场景,我更喜欢保留 XML 序列化。

于 2010-03-07T15:56:34.327 回答