我想保存对将存储在数据库中的图像的引用。 但我不知道如何在C#(Entityframework)中解决这个问题。
使用EF的代码第一种方法。
在Model类中,我必须String imageReference
,og必须使用byte
吗?或者还有另一种更好的解决方案吗?创建数据库后我想要的是,对于该列,它应该说Blob或者用于保存大型对象(如图像)的内容。
我也在想,只保存数据库中的引用,而不是图像本身可能是一个解决方案。但我不知道哪个更好?
答案 0 :(得分:1)
您需要将其创建为一个字节,并且您的数据库应该是blob
var image = new ImageEntity(){
imageReference= convertImageToByteArray(image)
}
_Context.Images.Add(image);
_Context.SaveChanges();
将ur图像转换为字节数组:
public byte[] convertImageToByteArray(Image imageIn)
{
MemoryStream memStream = new MemoryStream();
imageIn.Save(memStream , ImageFormat.Gif); //u may choose other formats
return memStream .ToArray();
}
我建议将文件路径保存为引用,而不是将其存储为blob,除非您别无选择。这是因为较大的DB会降低性能,硬盘在处理文件方面会做得更好。如果您的映像文件大于1MB,则文件系统优于SQL Server。将它存储在文件系统中也具有更大的灵活性(即您可以在下次将文件迁移到其他地方,并在迁移期间更改数据库中的链接,您无法在数据库上执行此操作)