2016-12-17 101 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,而且應該首先構建更多其他重要功能。
相關問題