首页 > 解决方案 > 使用 Entity Framework Core 映射图像类型属性

问题描述

我有一个具有类型属性的类,System.Drawing.Image因为我想在其中存储图像。尝试使用 Entity Framework Core 构建 Web API 控制器时,我收到错误消息:

错误图片

我认为问题在于System.Drawing.Image该类具有 type 的“Tag”属性object。现在,问题是如何修复这个映射?

标签: c#.net-coreentity-framework-core

解决方案


选项 1

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

[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; }

推荐阅读