【发布时间】:2026-01-11 00:10:02
【问题描述】:
如何使用 Entity Framework 在 SQL Server 2008 数据库中保存文件?
我想在 SQL Server 2008 中使用 FileStream。
【问题讨论】:
标签: entity-framework sql-server-2008 filestream
如何使用 Entity Framework 在 SQL Server 2008 数据库中保存文件?
我想在 SQL Server 2008 中使用 FileStream。
【问题讨论】:
标签: entity-framework sql-server-2008 filestream
我不明白为什么这不起作用 - filestream 列只是公开为 varbinary(MAX) 所以你应该能够使用实体框架设置列:
来自here的示例:
Files newFile = new Files();
newFile.FileID = Guid.NewGuid();
newFile.FileContents = System.IO.File.ReadAllBytes("TextFile1.txt");
ctx.AddObject("Files", newFile);
ctx.SaveChanges();
【讨论】:
varbinary(MAX) 列一样被处理,因此这种方法虽然有效,但不会非常有效,甚至无法用于非常大的文件。
实体框架不支持文件流等 SQL 服务器特定功能。你不能用 EF 来做,你必须回退到 ADO.NET。
编辑:
取消删除我的答案,因为我刚刚测试了 EF 如何处理 FILESTREAM 列。 EF 确实适用于FILESTREAM 列,所以我的回答并不完全正确,@BrokenGlass 提供了解决方案。问题是 EF 忽略了 FILESTREAM 关键字,并且在使用 FILESTREAM 列时并没有真正使用流。该列作为任何其他二进制列处理。
【讨论】: