I have a Student class inherited from ApplicationUser base class (ASP.NET Identity) and there is a ViewModel of it called StudentViewModel as shown below:
Entity Classes:
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
}
I use the following method in order to update a Student by mapping StudentViewModel to ApplicationUser in the Controller:
[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
}
When using this method, I encounter an error: "The type arguments for method 'UserManagerExtensions.Update(UserManager, TUser)' cannot be inferred from the usage. Try specifying the type arguments explicitly." Any idea to fix it?
Student
andÀpplicationUser
. Why don't you just create a 1-1 relationship between these 2 if you don't want to put everything inApplicationUser
? – RackrentUserManager<ApplicationUser>
. The error tells you it's can'tUpdate
aStudent
. – RackrentApplicationUser
and another table. – Rackrent