使用实体框架核心映射图像类型属性



我有一个属性类型为System.Drawing.Image的类,因为我想在其中存储图像。尝试使用实体框架核心搭建 Web API 控制器基架时,我收到错误消息:

错误的图像

我认为问题是System.Drawing.Image类具有类型object的"Tag"属性。现在,问题是如何修复此映射?

选项 1

可以将数据映射到类型为byte[]的另一个属性,而不是直接在 EF 映射中使用System.Drawing.Image

[NotMapped]
public System.Drawing.Image Image { get; set; }
public byte[] ImageData 
{
get 
{
using (var ms = new MemoryStream())
{
Image.Save(ms, Image.RawFormat);
return ms.ToArray();
}
}
set  
{
if (value == null)
{
Image = null;
}
else
{
using (var ms = new MemoryStream(value))
{
Image = Image.FromStream(ms);
}
}
}
}

选项 2

您也可以在模型中仅保留ImageData属性,并在模型外部处理图像的加载和保存。

public byte[] ImageData { get; set; }

相关内容

  • 没有找到相关文章

最新更新