使用NotMapped属性并在实体框架中的Json Post中

时间:2016-06-02 04:34:36

标签: c# json entity-framework fiddler

我正在使用带有Web API的Code-First实体框架。我需要从fiddler向控制器中的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是我的Image的字符串表示。它不应该导致DB中的列;因此,它标有NotMapped。当我进行转换时,它的目的就结束了:

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

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

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

这是我的提琴手的正文消息:

  

{“Caption”:“你好世界”,   “ImageDataString”: “/ 9J / 4AAQSkZJRgABAQEAYABgAAD / 2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCkkR1N / DVrd6ikBgtNZtv9H1SxAWUJsnX5mVGGZZdSxtB0anyfZ9z7TgLjnH8J5”   }

如何结合使用NotMapped来停止在DB中创建列,但同时仍然可以在帖子中使用它? EF天生就不可能吗?你还有什么建议?

1 个答案:

答案 0 :(得分:0)

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

创建一个单独的视图模型以发送到视图,其中包含imagedatastring属性。如果你愿意,你甚至可以让它继承实际的实体。