我有一些簡單的實體,現在需要有一個配置文件圖像。什麼是正確的方法來做到這一點?所以,這是一對一的關係,一個圖像只與一個實體相關,反之亦然。該圖像應該通過webform與插入相關實體一起上傳。保存圖像到數據庫
如果任何人都可以指出我正確的方向如何堅持圖像到數據庫和相關的實體將是偉大的。
我有一些簡單的實體,現在需要有一個配置文件圖像。什麼是正確的方法來做到這一點?所以,這是一對一的關係,一個圖像只與一個實體相關,反之亦然。該圖像應該通過webform與插入相關實體一起上傳。保存圖像到數據庫
如果任何人都可以指出我正確的方向如何堅持圖像到數據庫和相關的實體將是偉大的。
就在方評論:我覺得是不是存儲在數據庫圖像是一個好主意。
一般來說,在db中存儲圖像並不是一個好主意,因爲dbs旨在存儲文本不是大的二進制塊。爲圖像存儲路徑並將圖像放在文件夾中好得多。如果你想確定1到1的關係名稱圖像與實體的ID(1323.jpg)。
如果你想有圖像路徑應遵循的一些準則(在通用代碼防守):
但我認爲,出於某種原因,你應該這樣做。 因此,爲了實現你想要的:
DB設計
C#代碼
用戶字節數組來存儲它
檢查此鏈接的代碼示例:http://www.codeproject.com/Articles/21208/Store-or-Save-images-in-SQL-Server
我覺得下面的鏈接會給您的解決方案,
的代碼是微不足道的,但爲什麼DB? 如果這是一個網站,爲什麼不把它保存到磁盤上可以輕鬆引用它的位置呢?
數據庫進行了優化,以存儲已知大小和相對較小的數據。你的圖片最有可能會超過8KB(假設它是MAX數據類型)。 圖像將存儲在您的「配置文件」的獨立行/頁面中。
就我個人而言,我會將圖像保存在已知文件夾中,並使用圖像名稱的id。對於沒有圖像並使用標準gif或類似文件的配置文件,可能通過將配置文件id的simlinks/hardlinks添加到常用gif來簡化/修剪。
public class Profile
{
public int Id {get;}
public string Name {get; private set;}
public Image Picture {get; private set;}
public void Save()
{
using (var connection = new SqlConnection("myconnectionstring"))
using (var command = new SqlCommand("", connection))
{
command.CommandText =
"UPDATE dbo.TblProfile " +
"SET " +
"Name = @name, " +
"Picture = @picture " +
"WHERE ID = @id";
command.Parameters.AddWithValue("@name", Name);
command.Parameters.AddWithValue("@picture", Picture);
command.Parameters.AddWithValue("@id", Id);
command.ExecuteNonQuery();
}
}
}
請參見[通過ASP.Net MVC從SQL Server下載和上傳圖像](http://rusanu.com/2010/12/28/download-and-upload-images-from-sql-server-with-asp- net-mvc /) –
爲什麼這個問題已經被投票了? 當我投反對票的問題時,我發表了一條評論,解釋了爲什麼... –