我有一些简单的实体,现在需要有一个配置文件图像。什么是正确的方法来做到这一点?所以,这是一对一的关系,一个图像只与一个实体相关,反之亦然。该图像应该通过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 /) –
为什么这个问题已经被投票了? 当我投反对票的问题时,我发表了一条评论,解释了为什么... –