(十)AutoMapper

AutoMapper

1.DTO层

下载包
image

因为一般不允许在控制器传递数据库实体,实体类一般具有很多配置,特性,继承关系,命名,所以新增一层dto

在公共类库中
image

public class BaseDto : INotifyPropertyChanged
{
    public int id { get; set; }

    public event PropertyChangedEventHandler? PropertyChanged;

    //实现通知更新、
    public void OnPropertyChanged([CallerMemberName] string propertyName = "")
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

待办事项数据实体

//待办事项数据实体
//作为控制器传输的实体
public class ToDoDto : BaseDto
{
    private string title;
    private string content;
    private int status;
    public string Title
    {
        get { return title; }
        set { title = value; OnPropertyChanged(); }
    }

    public string Content
    {
        get { return content; }
        set { content = value; OnPropertyChanged(); }
    }

    public int Status
    {
        get { return status; }
        set { status = value; OnPropertyChanged(); }
    }
}

2. 在api中创建配置类

image

//配置映射关系
public class AutoMapperProFlie:MapperConfigurationExpression
{
    //ctor打出构造函数
    public AutoMapperProFlie()
    {
        CreateMap<ToDo,ToDoDto>().ReverseMap();
        //字段不同或者名称问题在这里配置
    }
}

3.修改类型

控制器
image
服务器接口
image

4.添加auto mapper

在program中

//添加automapper
var automapperConfig = new MapperConfiguration(config =>
{
    config.AddProfile(new AutoMapperProFlie());
});
builder.Services.AddSingleton(automapperConfig.CreateMapper());//创建一个mapper添加到单例当中

5. service 层修改

  1. 构造函数注入mapper
    image
  2. add和update修改
    image
    image
posted @ 2023-10-07 14:22  huihui不会写代码  阅读(57)  评论(0)    收藏  举报