使用 NotMapped 属性 并在 Json Post 中 Entity Framework

Use NotMapped property and in Json Post in Entity Framework

我正在使用 Code-First entity framework 和 Web API。我需要从提琴手针对控制器中的 post 方法发送一个测试模型对象。 该模型具有以下参数:

[Key]
public int ID { get; set; }
public string Caption { get; set; }
[JsonIgnore]
public byte[] Image { get; set; }
[NotMapped]
public string ImageDataString { get; set; }

ImageDataString 是我的图像的字符串表示形式。它不应该被放入数据库中的一列;因此,它被标记为 NotMapped。当我进行转换时,它的目的就结束了:

protected override UserImage CreateEntity(UserImage entity)
{
    entity.Image = Convert.FromBase64String(entity.ImageDataString);

因为从客户端传递字符串而不是字节[] 更容易。

现在的目标是能够模拟从fiddler发送实体对象。因为 属性 未映射,实体显示为空。如果我删除 [NotMapped] 标签,实体对象将被很好地填充。

这是我的提琴手在撰写中的正文消息:

{ "Caption":"hello World", "ImageDataString":"/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCkkR1N/DVrd6ikBgtNZtv9H1SxAWUJsnX5mVGGZZdSxtB0anyfZ9z7TgLjnH8J5" }

如何结合使用 NotMapped 来停止在数据库中创建列,但同时仍然能够在 post 期间使用它? EF 本质上是不可能的吗?您还有什么建议?

我建议您的实体只保留进入数据库的字段。

创建一个单独的视图模型以发送到视图,其中您有图像数据字符串 属性。如果你愿意,你甚至可以让它继承实际的实体。