如何将数据作为序列化对象插入db

时间:2010-08-04 06:17:09

标签: c# sql tsql

我的基本问题是如何将数据作为序列化对象插入数据库以及如何提取和使用它...任何建议!!?
例如:

{id:1, userId:1, type:PHOTO, time:2008-10-15 12:00:00, data:{photoId:2089, photoName:A trip to the beach}}

如您所见,我如何将数据插入 Data 列然后再使用它? 另一个问题是,如果我将 photoName 存储在 Data 中而不是使用JOINS并从其表中获取名称( {{ 1}} )根据它的 photos ,它们不会实现 Id 的最新更新(右边!?)我无法在表格照片和当前表格之间建立关系 - photoName (Id => - 如果我存储了这样的数据......那么部分问题就是我不确切知道哪些信息将存储在列中 photoId) 所以我无法为每种类型的信息自定义单独的列...

4 个答案:

答案 0 :(得分:1)

通常我会在这里看到两个选项。

  1. 您可以将XML序列化对象存储到数据库中,只需使用标准XML序列化,这里有一个example,您可以根据自己的需要进行调整。

  2. 您可以为此对象创建一个真实表格,并以“标准”方式执行。

  3. 使用选项1,过滤/加入/搜索“数据”列中的信息虽然在技术上仍然可行,但我不建议这样做,在我看来更适合静态存储过程。像用户设置实体或后端查询不太可能需要的其他项目。

    使用选项2,是的,你必须做更多的工作,但是如果你很好地定义了对象,那么它就有可能。

    <强>澄清 关于我在上面的#1中的例子。您可以写出序列化的内存流等,而不是文件。

答案 1 :(得分:1)

如果您不想以关系方式存储数据,那么最好不要使用关系数据库。几个对象数据库说JSON,并且能够很容易地处理这类问题。

答案 2 :(得分:0)

您可以将其存储为JSON字符串并使用JSON lib的JSONSerializer

http://json-lib.sourceforge.net/apidocs/index.html

将javabean转换为json字符串/对象,反之亦然。

通常我们使用它来存储没有配置参数未知的配置。

答案 3 :(得分:0)

关于在数据库中保存对象;您可以serialize your object into xml使用XDocument.ToString()save it in database的xml数据类型列。

cmd.Parameters.AddWithValue("@Value", xmldoc.ToString());

结帐,Work with XML Data Type in SQL Server