使用Entity Framework将文件保存在SQL Server 2008数据库中

Hos*_*nia 3 entity-framework filestream sql-server-2008

如何使用Entity Framework在SQL Server 2008数据库中保存文件?

我想在SQL Server 2008中使用FileStream.

Bro*_*ass 7

我不明白为什么这不起作用 - filestream列只是公开,varbinary(MAX)所以你应该能够使用Entity Framework设置列:

来自这里的样品:

Files newFile = new Files();
newFile.FileID = Guid.NewGuid();
newFile.FileContents = System.IO.File.ReadAllBytes("TextFile1.txt");
ctx.AddObject("Files", newFile);
ctx.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

  • 但这会将整个文件分配到内存中,对吗?还有其他合理的方法吗?毕竟,这就是FILE*STREAM*的全部目的. (5认同)

Lad*_*nka 5

实体框架不支持文件流等SQL Server特定功能.你无法用EF做到这一点,你必须回到ADO.NET.

编辑:

取消我的答案,因为我刚刚测试了EF处理FILESTREAM列的方式.EF确实与FILESTREAM列配合使用,所以我的答案并不完全正确,而@BrokenGlass提供了解决方案.问题是EF忽略了FILESTREAM关键字,在使用FILESTREAM列时并没有真正使用流式传输.该列作为任何其他二进制列处理.