保存对blob类型的引用

时间:2018-04-29 11:05:41

标签: c# visual-studio entity-framework

我想保存对将存储在数据库中的图像的引用。 但我不知道如何在C#(Entityframework)中解决这个问题。

使用EF的代码第一种方法。 在Model类中,我必须String imageReference,og必须使用byte吗?或者还有另一种更好的解决方案吗?创建数据库后我想要的是,对于该列,它应该说Blob或者用于保存大型对象(如图像)的内容。

我也在想,只保存数据库中的引用,而不是图像本身可能是一个解决方案。但我不知道哪个更好?

1 个答案:

答案 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。将它存储在文件系统中也具有更大的灵活性(即您可以在下次将文件迁移到其他地方,并在迁移期间更改数据库中的链接,您无法在数据库上执行此操作)