我正在使用带有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天生就不可能吗?你还有什么建议?
答案 0 :(得分:0)
我建议您的实体只保留进入数据库的字段。
创建一个单独的视图模型以发送到视图,其中包含imagedatastring属性。如果你愿意,你甚至可以让它继承实际的实体。