2

我在 C# 中有一个类,用于存储数据(如结构)。它有子类作为成员,还有其他子类等。每个子类都包含数据(各种字符串、整数、浮点数等)

有没有办法将一个这样的 C# 对象存储在数据库中的单列中?那将是什么类型的列,我该如何使用它?

我唯一能想到的就是使用算法将我的结构转换为字节序列并将其存储在二进制类型的字段中。

然后,我将使用解码算法将其取回并再次使其成为对象。

即便如此,C#中有这样的算法可以使用吗?

4

2 回答 2

4

看到这个问题 如果您愿意,您可以在 SQL Server 中使用 VARBINARY(MAX) 字段类型您可以在其中存储任何类型的对象,最大为 2 GB。

要访问它,您可以使用 ADO.NET - 如下所示:

object yourMysteryObject = (whatever you like it to be);

MemoryStream memStream = new MemoryStream();
StreamWriter sw = new StreamWriter(memStm);

sw.Write(yourMysteryObject);

SqlCommand sqlCmd = new SqlCommand("INSERT INTO TableName(VarBinaryColumn) VALUES (@VarBinary)", sqlConnection);

sqlCmd.Parameters.Add("@VarBinary", SqlDbType.VarBinary, Int32.MaxValue);

sqlCmd.Parameters["@VarBinary"].Value = memStream.GetBuffer();

sqlCmd.ExecuteNonQuery();
于 2013-02-10T12:41:42.810 回答
2

您可以使用 JSON.NET ( http://json.codeplex.com/ ) 将对象序列化为 JSON,并将 JSON 数据存储在数据库中。当您需要使用数据重新水合对象时,可以再次使用 JSON.NET 来完成...

文档在这里,它易于使用且速度非常快:http: //james.newtonking.com/projects/json/help/

于 2013-02-10T12:45:21.210 回答