处理C#EF 6中的图像和视频 - >建议的最大文件大小

时间:2017-06-14 09:48:49

标签: c# entity-framework entity-framework-6

在我们的商业应用程序中,我们处理图像和视频。我基于这个答案创建了实体框架模型:

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; }
}

1 个答案:

答案 0 :(得分:0)

没有任何客观的方法可以决定你的最大值。

SQL仅提供您的数据所需的内容,因此如果您已使用varbinary(max)作为列数据类型并且您只有200MB的视频文件,则该字段具有容量为2GB,因为它只使用200MB。

考虑到这一点,我建议使用varbinary(max),除非你知道每个文件的确切大小。这样你就可以确定它有足够的空间,你不会截断你的数据以适应它。