SQL FileStream + Entity Framework存储大文件

Kaf*_*hne 9 entity-framework filestream

当我想将文件存储在文件流列中时,我总是需要将整个二进制文件读入内存:

using (MemoryStream memoryStream = new MemoryStream())
{
   sourceStream.CopyTo(memoryStream);
   binaryStore.Content = memoryStream.ToArray(); //Content = filestream column
}
Run Code Online (Sandbox Code Playgroud)

有没有办法与实体框架,直接放流?因为,如果我想上传一个大文件,我会得到一个OutOfMemoryException.

Lad*_*nka 7

EF没有任何支持FIlESTREAM.它处理与FILESTREAM普通VARBINARY(MAX)列的所有交互,因此如果要使用流式传输,则必须直接使用ADO.NET.

  • 找一个2岁的答案......你知道今天是否仍然如此吗? (8认同)

Min*_*Min 3

没有看到任何有关 EF 中 FILESTREAM 支持的更新。(之前提到过 .net 3.5 sp1 版本的部分支持 )。我认为实体框架正在通过 TSQL 访问 FILESTREAM,并且显然您将无法获得 FILESTREAM 的流性能优势。(需要将所有文件内容读入内存

因此,推荐的方法是使用SqlFileStream.Net API。

http://lennilobel.wordpress.com/2011/08/22/using-sqlfilestream-in-c-to-access-sql-server-filestream-data/