使用實體框架將文件保存在數據庫中

.net asp.net-mvc c# entity-framework upload

我有一個基於Entity Framework和Microsoft SQL Server 2008的ASP.NET MVC解決方案。我需要創建一個允許我的用戶上傳文件的功能。

我想要的是:

  • 使用實體框架在數據庫中存儲文件的解決方案
  • 一種解決方案,可以檢測並阻止通過某種散列/校驗和兩次上傳同一文件
  • 關於數據庫/表格設計的提示

一般承認的答案

在SQL Server 2008數據庫中存儲文件的“正確”方法是使用FILESTREAM數據類型 。我不知道實體框架支持這一點,但您當然可以嘗試看看會發生什麼。

也就是說,大多數時候人們這樣做,他們不會將文件存儲在數據庫中。這樣做意味著您需要通過ASP.NET和數據庫服務器來提供可以直接從Web服務器提供的文件。它還可能使您的數據庫和站點的備份圖片有些複雜化。因此,當我們將文件上傳到MVC / Entity Framework時,我們只存儲對數據庫中文件位置的引用,並將文件本身存儲在其他位置。

顯然,哪種策略適合您,很大程度上取決於您的應用程序的細節。


熱門答案

在實體模型中,將BLOB數據庫列映射到byte[]屬性。將上載文件的內容分配給實體對象的該屬性,並將更改保存在ObjectContext

要計算哈希,可以使用MD5CryptoServiceProvider



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因