Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
存储和加载程序数据,C#WPF_C#_.net_Database_File_File Manipulation - Fatal编程技术网

存储和加载程序数据,C#WPF

存储和加载程序数据,C#WPF,c#,.net,database,file,file-manipulation,C#,.net,Database,File,File Manipulation,我正在用WPF中的C#编写一个实用程序,允许用户创建角色扮演场景,包括怪物、物品、角色等 用户将创建或导入元素(怪物等),然后使用导入的元素创建场景。程序使用的所有内容都是在程序中创建的,因此我没有任何要访问的预定义数据 这里是我的问题-存储和加载数据的最佳方式是什么 目前,我正在使用XML序列化将对象序列化为XML文件,并在以后重新加载它们。这有点笨重,我想知道数据库是否会更有效-数据肯定是关系型的(怪物有项目,地图有怪物等等),可能有几十个或数百个条目 我不需要使用实际的代码行或方法,只需要

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

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

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

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

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


谢谢

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


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

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


要访问数据,我个人非常喜欢Linq To Sql,它可以直接在C#中进行类型安全查询。

数据库无疑是一种方法。用于与数据库对话,这可能会在开始时满足您99%的需求


对于需要不同进程交互的场景,我更愿意保持XML序列化。

数据库无疑是一种选择。用于与数据库对话,这可能会在开始时满足您99%的需求


对于需要不同流程交互的场景,我更愿意保留XML序列化。

这取决于您需要实现什么。数据库有一个位置,但是平面文件对于数据来说也很好(通过序列化)

所以,;xml给您带来了什么问题?如果你能回答这个问题,那么你就会知道你想要解决的痛点是什么。您提到了“游戏”,事实上,平面文件更适合(假设您想要最小的开销等),但两者通常都可以。就CPU和磁盘而言,二进制序列化可能更有效(但我不建议使用
BinaryFormatter
——当您更改类型时,它会咬到您)


我不是反数据库的(远非如此)——我只是想提出一个平衡的观点-这实际上取决于你需要实现什么。数据库有一个位置,但是平面文件对于数据来说也很好(通过序列化)

所以,;xml给您带来了什么问题?如果你能回答这个问题,那么你就会知道你想要解决的痛点是什么。您提到了“游戏”,事实上,平面文件更适合(假设您想要最小的开销等),但两者通常都可以。就CPU和磁盘而言,二进制序列化可能更有效(但我不建议使用
BinaryFormatter
——当您更改类型时,它会咬到您)


我不是反数据库的(远非如此)——我只是想提出一个平衡的观点-p

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

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

我从XML中得到的主要问题是循环引用。元素(如游戏项目)存储在源代码中,并且还存储对它们来自的源代码的引用。谢谢你给我其他的选择@Joel—DataContractSerializer/NetDataContractSerializer之类的东西支持“图形”模式,它保留对象引用(甚至是循环引用)。我必须添加一个图形模式到pb网络-p我从XML中得到的主要问题是循环引用。元素(如游戏项目)存储在源代码中,并且还存储对它们来自的源代码的引用。谢谢你给我其他的选择@Joel—DataContractSerializer/NetDataContractSerializer之类的东西支持“图形”模式,它保留对象引用(甚至是循环引用)。我必须添加一个图形模式到pb网络-汉克斯。我想我一直犹豫使用数据库的主要原因是担心简单性,这让我感觉好多了。谢谢。我认为我一直犹豫使用数据库的主要原因是担心简单性,这让我感觉好一点。