在我的项目中,我有一个大型数据库,有大约60个表。 我应该保存并收集许多图像文件(大约5000个),它们的平均大小约为2MB。
我的数据库的估计大小将是10 GB甚至更高!
首先在代码中考虑这些模型:
class Document
{
[Key]
public int Id {get;set}
// ...
public virtual ICollection<ImageDocument> Images {get;set;}
}
和
class ImageDocument
{
[Key]
public int Id {get;set}
// ...
public Document Document {get;set;}
}
如您所见,每个文档都有一些ImageDocuments
。
我的解决方案:
考虑以下两步:
将ImageDocuments
添加到相关文档,然后添加生成的
通过调用Add
中的SaveChange
和EntityFramework
方法来记录文档
DbContext
。
为每个ImageDocuments
调用创建的存储过程
相关文件。被调用的存储过程使用bcp命令
从数据库中提取图像文件并将其保存在特定的路径中
然后,服务器从数据库中删除ImageDocument
的数据。
它有效,但我有这样的问题:
ImageDocument
记录到
发布数据库空间。现在我的问题是,有没有更好的解决方案来解决问题?
如果我们可以在SQL服务器中创建一个文件字段来维护文件分隔数据库文件中的内容,那就太棒了。
答案 0 :(得分:2)
如果您使用的是SQL Server,则应该使用FileStreams。直接通过SQL代理到磁盘。