C# 插入IList的最佳方法<;溪流>;m_溪;sql中的对象?

C# 插入IList的最佳方法<;溪流>;m_溪;sql中的对象?,c#,sql,list,C#,Sql,List,我有一个列表IList m_streams=new list() 我想在sql中插入m_streams对象,那么如何实现这一点,我应该使用什么样的数据类型来存储它,以及如何从sql数据库中再次获取它?您应该尝试二进制序列化/反序列化。也许BinaryFormatter类会有所帮助 但我怀疑它是否会起作用,因为流不是一个简单的数据实体-它是COM对象的包装器,我不确定是否有可能以简单的方式序列化/反序列化它。因此您宁愿保存流从中读取数据的位置和位置。然后根据这些数据创建新的流对象。假设您不知道流中

我有一个列表
IList m_streams=new list()

我想在sql中插入m_streams对象,那么如何实现这一点,我应该使用什么样的数据类型来存储它,以及如何从sql数据库中再次获取它?

您应该尝试二进制序列化/反序列化。也许BinaryFormatter类会有所帮助


但我怀疑它是否会起作用,因为不是一个简单的数据实体-它是COM对象的包装器,我不确定是否有可能以简单的方式序列化/反序列化它。因此您宁愿保存流从中读取数据的位置和位置。然后根据这些数据创建新的流对象。

假设您不知道流中存储了什么,我建议使用FILETABLE而不是常规表。否则,您的系统将很容易在记录大小和编码方面出错。无论如何,索引在表中可能不是很有用


至于序列化流对象本身是否是一个好主意,我想说,您可能无法做到这一点。但是,将内容流式输入和流式输出将完成或多或少相同的事情。流对象本身的属性不是您希望保留的,但内容当然很有趣。

我在sql中创建了一个varbinary(max)字段,并使用convert(varbinary(max),obj)将该对象插入sql,但当我试图使用“m_streams=(List)dt.Rows[0][“PrintStream”];将其取回时然后它显示一个错误“无法将'System.Byte[]”类型的对象强制转换为'System.Collections.Generic.List`1[System.IO.Stream]'”“您想存储流中的所有数据,还是只存储有关流的信息:它的源、读取位置等?是的,我想存储完整的流对象。”。