为什么Automapper不能为基地工作?继承类
本文关键字:工作 继承 Automapper 不能 为什么 | 更新日期: 2023-09-27 18:07:17
在MVC应用程序中,有一个继承自ApplicationUser
基类的Student类。. NET Identity),其中有一个ViewModel
称为StudentViewModel
,如下所示:
public class ApplicationUser : IdentityUser<int, ApplicationUserLogin,
ApplicationUserRole, ApplicationUserClaim>, IUser<int>
{
public string Name { get; set; }
public string Surname { get; set; }
//code omitted for brevity
}
public class Student: ApplicationUser
{
public int? Number { get; set; }
}
ViewModel:
public class StudentViewModel
{
public int Id { get; set; }
public int? Number { get; set; }
//code omitted for brevity
}
我使用以下方法通过将控制器中的StudentViewModel
映射到ApplicationUser
来更新学生:
[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult Update([Bind(Exclude = null)] StudentViewModel model)
{
//Mapping StudentViewModel to ApplicationUser ::::::::::::::::
var student = (Object)null;
Mapper.Initialize(cfg =>
{
cfg.CreateMap<StudentViewModel, Student>()
.ForMember(dest => dest.Id, opt => opt.Ignore())
.ForAllOtherMembers(opts => opts.Ignore());
});
Mapper.AssertConfigurationIsValid();
student = Mapper.Map<Student>(model);
//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
//Then I want to pass the mapped property to the UserManager's Update method:
var result = UserManager.Update(student);
//code omitted for brevity
}
当使用这个方法时,我遇到一个错误:
UserManagerExtensions方法的类型参数。Update(UserManager, TUser)'不能从用法中推断出来。尝试显式指定类型参数。
有什么好办法吗?
您得到的错误与AutoMapper
无关。
问题是您的student
变量是object
类型,因为以下行
var student = (Object)null;
应该是Student
。
删除上面的行并使用
var student = Mapper.Map<Student>(model);
或者改成
Student student = null;