0

我最近使用 C# Winforms 制作了一个垄断游戏,现在我需要将其转换为 Web 应用程序。我正在使用 ASP.NET,并且在单击按钮时重置变量时遇到了一些问题。

为了解决这个问题,我计划将所有数据存储在 SQL Server 数据库中,无论何时更改,然后在需要时进行检索。主要问题是我有 2 个课程,Square并且Player.

我可以很好地处理玩家的数据,但每个方块都有一个与之关联的玩家,称为“所有者”。我只是想知道是否有任何方法可以在 SQL Server 数据库中将“所有者”的数据类型设置为“玩家”类,以便我可以将其与所有其他数据一起保存。提前致谢。

4

1 回答 1

0

SQL Server 专为结构化表格数据而设计,并且最适合用于结构化表格数据。对于复杂的对象,这通常意味着需要多个表中的多个记录来表示单个对象。

但是,您要做的是将复杂对象存储在 SQL Server 的单个列中。您可以在 SQL Server 中执行此操作,方法是将对象序列化为字符串(通常是 XML 或 JSON)并将对象的字符串表示形式存储在 SQL 的 nvarchar(max) 列中。当您获取记录时,将其反序列化回一个对象。执行此操作时,您会在 SQL Server 中失去相当多的功能,但是如果您不需要在对象服务器端操作数据,那么它可以正常工作(您可以在 SQL Server 中进行有限的 XML 和 JSON 处理,但是从你正在做的事情的声音来看,你不需要)。

序列化对象的最简单和最流行的方法之一是使用 Newtonsoft JSON。为 Newtonsoft 添加 NuGet 包,然后通过调用string myComplexObjectAsAString = JsonConvert.SerializeObject(myComplexObject);. 您可以将该字符串发送到 SQL,当您取回它时,使用MyComplexObjectType myComplexObject = JsonConvert.DeserializeObject<MyComplexObjectType>(theStringDataThatYouGotFromSqlServer);

于 2019-05-04T22:22:48.603 回答