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



我使用的是带有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是我的图像的字符串表示。它不应该在数据库中生成一列;因此,它被标记为NotMapped。当我进行转换时,它的目的就结束了:

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

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

现在的目标是能够模拟从fiddler发送实体对象。因为属性没有映射,所以实体显示为null。如果我移除[NotMapped]标记,实体对象将被很好地填充。

这是我小提琴手的身体信息:

{"标题":"你好,世界","ImageDataString":"/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIAQICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQJCAgKCkkR1N/DVrd6ikBgtNZtv9H1SxAWUJsnX5mVGGZZdSxtB0anyfZ9z7TgLjnH8J5"}

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

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

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

最新更新