【问题标题】:Entity Framework and appending VARBINARY field实体框架和附加 VARBINARY 字段
【发布时间】:2014-06-10 14:33:08
【问题描述】:

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

是否有任何示例代码/网站说明如何执行此操作?或者甚至可以使用实体框架将字节附加到该字段?

我需要附加数据,因为获取 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;
    }
 }

感谢您的帮助

【问题讨论】:

    标签: c# entity-framework varbinary


    【解决方案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 字段

    【讨论】:

      【解决方案2】:

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

      但是,如果您尝试在内存中操作 1GB+ 文件的内容,那么无论您如何操作都会很有趣...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多