我正在研究Linq To Sql,WPF和我有一个数据库现在我需要在数据库中保存一些图片,但我不知道哪个是正确的数据类型来保存图片数据库(这个数据库会连接从10个用户同时)。 你能指出我正确的方法来克服这一步吗? 如果我没有错,那么在数据库中保存图片并不是一个好主意,但如果你能给我一个更好的方法,我会应用它。 非常感谢你的时间。
不错的问候
答案 0 :(得分:5)
您可以使用'varbinary(MAX)'或'image'列类型。 Linq2Sql将自动生成一个使用二进制对象来包装图像的类。 Binary对象只是一个byte []的包装器。
myObject.Image = new Binary(imageByteArray);
答案 1 :(得分:3)
将图片存储为blob,包含图像的类中定义的变量可以是byte []流。或者,您只需在数据库中存储对图片的引用,并将图像存储在文件服务器上。
答案 2 :(得分:1)
通常,您将在数据库端使用varbinary(max) - 或小于max-,并且您将在类中使用byte []类型。
答案 3 :(得分:1)
当人们谈论这个问题时会发生很多热烈的争论,我想请注意,您可能需要考虑将该路径存储到数据库中的网络文件夹中。
将实际图像存储在数据库中的缺点是所有这些字节必须通过SQL查询来回发送,如果这些图像很大,则会大大增加数据库的大小。以及上面提到的奇怪的事情。
无论如何我不想打开一罐蠕虫,只是想展示另一种选择。
更新:
这样的事情:
public partial class LinqClass
{
public string ImagePath { get; set; }
public System.Drawing.Image Picture
{
get
{
return System.Drawing.Image.FromFile(ImagePath);
}
}
}
其中ImagePath是要保存文件路径的db中的实际列。这没有保存文件的代码(比如File.Save(ImagePath)等,但它是一个开始。
答案 4 :(得分:0)
我从未使用Linq完成它,但我们使用b64转换为图像,然后使用clob数据类型。当您想要查看图像时,请反转b64。