当 DTO 中缺少某些属性时,如何将 DTO 对象映射到实体?
How to map DTO object to entity when some properties are missing in the DTO?
我在控制器中收到 PostDTO 对象,我正在将其映射到 Post 实体并更新数据库。出现问题是因为 PostDTO 没有状态 属性 而 Post 实体确实有状态 属性,所以当我将 PostDTO 映射到 Post, Post.Status 变为空。我不希望它为空,我希望它在数据库中不受影响。我可以从数据库中检索 post 并手动映射 Status 属性 但是有更好的解决方案吗?
public class PostDTO
{
public int Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public bool Urgent { get; set; }
}
public class Post
{
public long Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public bool Urgent { get; set; }
public string Status { get; set; }
}
var post = _mapper.Map<Post>(postDto); //here post.Status becomes null
您可以使用这样的方法来确保该字段未更新:
或者您可以先从数据库中获取实体,以便从数据库中填充状态,然后将 DTO 更改应用到实体。
还有其他方法,但它们不能真正应用于 EF。
我在控制器中收到 PostDTO 对象,我正在将其映射到 Post 实体并更新数据库。出现问题是因为 PostDTO 没有状态 属性 而 Post 实体确实有状态 属性,所以当我将 PostDTO 映射到 Post, Post.Status 变为空。我不希望它为空,我希望它在数据库中不受影响。我可以从数据库中检索 post 并手动映射 Status 属性 但是有更好的解决方案吗?
public class PostDTO
{
public int Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public bool Urgent { get; set; }
}
public class Post
{
public long Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public bool Urgent { get; set; }
public string Status { get; set; }
}
var post = _mapper.Map<Post>(postDto); //here post.Status becomes null
您可以使用这样的方法来确保该字段未更新:
或者您可以先从数据库中获取实体,以便从数据库中填充状态,然后将 DTO 更改应用到实体。
还有其他方法,但它们不能真正应用于 EF。