我有一个属性类型为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; }