如何在 entity framework 的 .Add() 中传递 DTO?
How do I pass a DTO in .Add() of entity framework?
例如
我有一个实体
学生
ID, Name, DateCreated, GUID
学生DTO
Name, DateCreated
现在是自动映射器
CreateMap<students, studentsDTO>()
.ForSourceMember(up=> up.ID, opt=> opt.Ignore())
.ForSourceMember(up => up. GUID, opt=> opt.Ignore());
现在我有方法了
public IHttpActionResult AddStudents(studentsDTO model)
{
_context.Students.Add(model);
return Ok();
}
但抛出错误,指出 model
的类型与 Add
中的预期类型不匹配。
如何解决?
您必须在添加之前将您的 DTO 映射到您的实体,如下所示:
public IHttpActionResult AddStudents(studentsDTO model)
{
_context.Students.Add(_mapper.Map<Students>(model));
return Ok();
}
确保通过控制器构造函数注入了 AutoMapper:
private readonly IMapper _mapper;
public StudentsController(IMapper mapper)
{
_mapper = mapper;
}
然后,您可以使用AutoMapper将DTO转换为实体模型。
public IHttpActionResult AddStudents(studentsDTO model)
{
students students = _mapper.Map<Students>(model);
_context.Students.Add(students);
return Ok();
}
例如
我有一个实体
学生
ID, Name, DateCreated, GUID
学生DTO
Name, DateCreated
现在是自动映射器
CreateMap<students, studentsDTO>()
.ForSourceMember(up=> up.ID, opt=> opt.Ignore())
.ForSourceMember(up => up. GUID, opt=> opt.Ignore());
现在我有方法了
public IHttpActionResult AddStudents(studentsDTO model)
{
_context.Students.Add(model);
return Ok();
}
但抛出错误,指出 model
的类型与 Add
中的预期类型不匹配。
如何解决?
您必须在添加之前将您的 DTO 映射到您的实体,如下所示:
public IHttpActionResult AddStudents(studentsDTO model)
{
_context.Students.Add(_mapper.Map<Students>(model));
return Ok();
}
确保通过控制器构造函数注入了 AutoMapper:
private readonly IMapper _mapper;
public StudentsController(IMapper mapper)
{
_mapper = mapper;
}
然后,您可以使用AutoMapper将DTO转换为实体模型。
public IHttpActionResult AddStudents(studentsDTO model)
{
students students = _mapper.Map<Students>(model);
_context.Students.Add(students);
return Ok();
}