当我想将文件存储在文件流列中时,我总是需要将整个二进制文件读入内存:
using (MemoryStream memoryStream = new MemoryStream()) { sourceStream.CopyTo(memoryStream); binaryStore.Content = memoryStream.ToArray(); //Content = filestream column }
有实体框架的方法,直接放流吗?因为,如果我想上传一个大文件,我会得到一个OutOfMemoryException.
解决方法
没有在EF中看到有关FILESTREAM支持的任何更新. (以前作为.net 3.5 sp1版本
here的部分支持提到).我认为实体框架正在通过TSQL访问FILESTREAM,并且显然您将无法获得FILESTREAM的流性能优势. (需要将所有文件内容读入内存)
因此,推荐的方法是使用SqlFileStream .Net API.
Using SqlFileStream in C# to Access SQL Server FILESTREAM Data