在我们的商业应用程序中,我们处理图像和视频。我基于这个答案创建了实体框架模型:
https://stackoverflow.com/a/6241232/3850405
我知道这会导致varbinary(MAX)
限制大约2 GB,因为EF不支持FILESTREAM
开箱即用。
https://stackoverflow.com/a/5723825/3850405
但是我找不到推荐最大文件大小是多少?我知道这可能属于基于意见,但我希望给定的背景允许它。对于图像,我想大约5 MB,视频200 mb,只有当用户想要看到它们时才会获取它们(名称将显示在前端)。
这是一个很好的解决方案,还是我应该重新考虑这一切?实施FILESTREAM
是否有益,即使默认情况下不支持它?
当前型号:
public class Media
{
[Key]
public int Id { get; set; }
public DateTime Created { get; set; }
public DateTime Updated { get; set; }
public virtual ICollection<Image> Images { get; set; }
public virtual ICollection<Video> Videos { get; set; }
}
public class Image
{
[Key]
public int Id { get; set; }
public DateTime Created { get; set; }
public DateTime Updated { get; set; }
public string Name { get; set; }
public virtual byte[] Image { get; set; }
public int MediaId { get; set; }
public virtual Media Media { get; set; }
}
public class Video
{
[Key]
public int Id { get; set; }
public DateTime Created { get; set; }
public DateTime Updated { get; set; }
public string Name { get; set; }
public virtual byte[] Video { get; set; }
public int MediaId { get; set; }
public virtual Media Media { get; set; }
}
答案 0 :(得分:0)
没有任何客观的方法可以决定你的最大值。
SQL仅提供您的数据所需的内容,因此如果您已使用varbinary(max)
作为列数据类型并且您只有200MB的视频文件,则该字段具有容量为2GB,因为它只使用200MB。
考虑到这一点,我建议使用varbinary(max),除非你知道每个文件的确切大小。这样你就可以确定它有足够的空间,你不会截断你的数据以适应它。