1

我使用 linq to sql 将文件存储在varbinary(max)字段中。Filestream 也已激活,但是当我尝试存储 400 或 500 MB 的文件时,我收到此错误:

Exception of type 'System.OutOfMemoryException' was thrown  

我的代码是:

Dim ByteArray() As Byte = File.ReadAllBytes(OpenFileDialog1.FileName)
Dim tb As New tb_1()
tb._id = System.Guid.NewGuid()
tb._Blob = New System.Data.Linq.Binary(ByteArray)
tb._text = Date.Now
db.tb_1s.InsertOnSubmit(tb)
Dim tb2 As New tb_2
tb2._id = System.Guid.NewGuid
tb2._Master = tb._id
tb2._text = 2
db.tb_2s.InsertOnSubmit(tb2)
db.SubmitChanges()

我得到这个异常的原因可能是什么,我该如何避免它?

4

2 回答 2

1

简单的答案:如果你唯一的工具是锤子,那么每个问题看起来都像钉子。

Linq2SQL 是一个 O/R 映射器。它不是用来处理对象中大量的二进制数据的。没有办法按照你想要的方式做你想做的事。删除此特定部分的 Linq2SQL 并使用 SQL 特殊语法进行部分读/写(您基本上可以只写部分 blob / 读部分 blob 的每个 SQK 命令)。

顺便说一句,对于几乎所有其他 ORM 来说也是如此 - BLOB 存储并不是您在创建 ORM 时想到的(去过那里,做过)。

于 2010-07-04T07:03:58.860 回答
0

我认为您可以使用 Image 数据类型(在 SQL Server 中)在数据库中存储大文件。如果您使用 SQL Server 以外的另一个 DBMS,它应该具有与 Image 数据类型等效的数据类型图像是一个字节数组,所以你不应该改变你的代码

于 2009-09-06T11:45:30.910 回答