C# 为什么要将序列化对象保存在数据库中?

C# 为什么要将序列化对象保存在数据库中?,c#,.net,clr,C#,.net,Clr,为什么要将数据库中的序列化对象保存为二进制,而不是在简单的数据类型中分离?原因可能是它们在一个数据表中存储各种类型,并且有一个确定类型的字段。另一个原因是,您可能需要用一个表支持对象的多个版本。在某些情况下,这是一个完全可以接受的解决方案 原因可能是它们在一个数据表中存储了各种类型,并且有一个字段确定类型。另一个原因是,您可能需要用一个表支持对象的多个版本。在某些情况下,这是一个完全可以接受的解决方案 您可以将对象层次结构(例如父对象及其子对象)序列化并存储在一列中,而传统上这种关系需要存储在多

为什么要将数据库中的序列化对象保存为二进制,而不是在简单的数据类型中分离?

原因可能是它们在一个数据表中存储各种类型,并且有一个确定类型的字段。另一个原因是,您可能需要用一个表支持对象的多个版本。在某些情况下,这是一个完全可以接受的解决方案

原因可能是它们在一个数据表中存储了各种类型,并且有一个字段确定类型。另一个原因是,您可能需要用一个表支持对象的多个版本。在某些情况下,这是一个完全可以接受的解决方案

您可以将对象层次结构(例如父对象及其子对象)序列化并存储在一列中,而传统上这种关系需要存储在多个表中。

您可以将对象层次结构(例如父对象及其子对象)序列化并存储在一列中,传统上,这种关系需要存储在多个表中。

如果您不需要对dbms中的数据执行任何操作(即,所有查询都将获取整个对象),则将其存储为序列化对象将非常有效。您始终可以规范化数据(即使数据是分层的或列表的),但如果您始终获取整个数据,则可以通过存储对象(几乎)来跳过一些db操作(例如JOIN)。

如果您不需要对dbms中的数据执行任何操作(即所有查询都将获取整个对象)将其存储为序列化对象将非常有效。您始终可以规范化数据(即使它是层次结构或列表),但如果您始终获取整个数据,则可以通过存储对象(几乎)以供使用来跳过一些db操作(例如,JOIN)。

效率?并非所有对象都“容易”实例化,有时使用一点额外的空间来存储整个对象及其内部状态比浪费大量cpu周期从单个存储值从头开始重建要容易得多。同样,自定义数据类型仍然是平面记录。如果要序列化对象列表,该怎么办?如果对象的模式/布局是动态的呢?这样做有很多原因,我不认为这个问题会有一个准确的“正确”答案,因为他们没有使用文档数据库。^效率?不是所有对象都是“简单”的“实例化,有时使用一点额外的空间来存储整个对象及其内部状态比浪费大量cpu周期从单个存储值从头开始重建要容易得多。同样,自定义数据类型仍然是平面记录。如果要序列化对象列表,该怎么办?如果对象的模式/布局是动态的呢?这样做有很多原因,我认为这个问题不会有一个确切的“正确”答案,因为他们没有使用文档数据库。^^