簡體   English   中英

如何使用C#和MVC3在MSSQL數據庫中搜索byte [] / varbinary

[英]How to search a MSSQL database for byte[]/varbinary using C# and MVC3

對於最近的MVC3項目,我最終將文件存儲在MSSQL數據庫中作為byte[] (MVC3將其轉換為varbinary(max)列)。

文件提交到數據庫后,它們永遠不會改變。

現在我試圖變得非常聰明並且避免多次存儲相同的文件,即使用戶一遍又一遍地添加相同的文件。

我避免這種情況的第一個想法是創建一個where查詢來嘗試查找我正在嘗試添加的byte[]是否存在匹配。 然而,我擔心這個問題太重了,因為文件大小可能在100Mb左右,並且可能有多個人同時添加它們。

為了更加聰明,我可以使用有關該文件的一些信息來縮小搜索范圍。 我目前在模型中有以下相關列。

public byte[] FileData { get; set; }        
public String MimeType { get; set; }
public double FileSizeMb { get; set; }

我可以搜索是否有任何文件具有相同的mime類型和文件大小,以及可能添加byte[]的哈希值,看看我是否可以在嘗試匹配byte[]之前獲得匹配。 這樣我只是比較當我有一個正確類型和正確類型的正確大小的文件,這應該是較輕的..

有沒有更好的選擇來實現這一目標? 我怎樣才能最好地解決這個問題?

如果它有任何區別我正在使用mssql 2012。

我認為以字節存儲原始長度和由c#計算的哈希就足夠了。

您應該計算FileData哈希值(當然是在Web服務器端),並使用哈希和文件大小進行搜索。 如果您有匹配項,則應將FileData下載到Web服務器並進行比較(不是相反)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM