2016-12-17 79 views

回答

1

用的EntityFramework CodeFirst的byte []会自动映射到VARBINARY(最大值)

public class AudioFile 
{ 
    //TODO: DB generated 
    [Key] 
    public int ID { get; set; } 
    //This will automatically map to varbinary(max) 
    public byte[] FileData { get;set; } 
    public string LocalFileName { get;set;} 
    public string MIMEType {get;set;} 
} 

虽然您使用的是一般的byte []存储,您可以使用类专业化添加更多的封装。实际的FileData字段不需要任何Audio数据类型。

public partial class AudioFile 
{ 
    public void Play() 
    { 
     //TODO 
    } 
} 

刚刚的SQL Server的思考和最好的数据类型

VARBINARY(最大值)是用来存储二进制数据的所有文件类型的最佳类型。这不包括对FileStreaming的考虑,也不包括将文件单独存储到文件夹中。

Varbinary限制 - 如果您打算存储大量这些音频流,并且您正在使用SQL Server Express,则很快就会达到10GB的限制。您可以继续使用更多数据库进行分区,但通常将文件数据存储在数据库字段中是个不错的主意。

如果您刚启动原型应用程序或第一个版本,请保持范围不变。

FileStream是一个不错的选择。在SQL Server上进行配置需要一点时间,如果这是您的第一次。

但我经常选择我自己的文件夹。这是在Web应用程序上下文,其中一个可以直接公开该文件的文件夹的静态文件下载和CDN缓存(取决于信息的敏感性)要简单得多。

结论:

  • 出简单的领域,最好的选择是VARBINARY(最大值)
  • VARBINARY(最大)也是最快的得到持续
  • 以后可以当转换它会成为一个问题,但我相信你的构建不仅仅是一个AudioFile Data Store,而且应该首先构建更多其他重要功能。
相关问题