实体框架并附加VARBINARY字段

时间:2014-06-10 14:33:08

标签: c# entity-framework varbinary

我正在尝试将文件的字节添加到数据库中的字段,该字段的类型为VARBINARY,由于文件大小限制,需要附加此字段

是否有任何示例代码/网站如何执行此操作?或者甚至可以使用Entity Framework将字节附加到此字段?

我需要附加数据,因为获取1GB +的字节数组会导致内存异常,所以我认为这是唯一的方法..

我做过的一些代码

using (var stream = File.OpenRead(fn))
{
   long bytesToRead = 1;
   byte[] buffer = new byte[bytesToRead];

    while (stream.Read(buffer, 0, buffer.Length) > 0)
    {
        Item = buffer;
    }
 }

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

基本思想是创建一个实现如下更新的存储过程:

UPDATE MyTable SET Col = Col + @newdata WHERE Id = @Id

并使用ExecuteSqlCommand(see MSDN docs here)调用它。

但在这种情况下,您只需将问题转移到SQL Server端。必须检索,修改和回写列。

要真正解决内存问题,请使用UPDATETEXT实现存储过程,这对您的要求更有效:

  

更新现有的text,ntext或image字段。使用UPDATETEXT仅更改text,ntext或image列的一部分。使用WRITETEXT更新和替换整个text,ntext或image字段

答案 1 :(得分:0)

将大文件存储在数据库中时,通常将文件存储在Web服务器上而不是数据库中。在数据库中,您可以存储文件的路径,因此您的代码可以访问它的内容,而无需在数据库中存储数据。

但是,如果你试图在内存中操作1GB +文件的内容,那么这样做会很有趣......