将SQL Server数据库列的数据类型设置为一个类

时间:2019-05-04 13:45:07

标签: asp.net sql-server

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

为了解决此问题,我计划在更改数据时将所有数据存储在SQL Server数据库中,然后在需要时进行检索。主要问题是我有2个类,SquarePlayer

我可以处理玩家所需的数据,但是每个方块都有一个与之关联的玩家,称为“拥有者”。我只是想知道是否可以在SQL Server数据库中将“所有者”的数据类型设置为“播放器”类,以便我可以将其与所有其他数据一起保存。预先感谢。

1 个答案:

答案 0 :(得分: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);